【javaWeb 第四篇】后端-Maven详细入门教程

Maven入门教程

  • 前言
  • Maven配置
  • Maven依赖管理
  • Maven的生命周期

前言

本文是作者通过学习过程中的学习笔记,希望帮助大家,同时大家可以搭配黑马程序员进行学习

Maven配置

Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具

  • 作用:
  1. 方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题,需要下载的依赖在pom.xml中进行声明就好,便捷好用
  2. 统一的目录结构(将多个软件不能够互相打开的问题做出很好的解决方案)
    结构目录
  3. 标准跨平台(linux,Windows,MacOS)的自动化构建方式
    在这里插入图片描述
    提供统一的,标准的构建流程以及简约的开发命令
    举例:
    比如要将maven中的文件进行编译,在右侧的maven的编辑中点击compile进行编译,编译好的文件会自动创建并存储到target目录中,而打包直接点击package就行
  • maven整体结构
    maven结构
    maven中生命周期中的各个操作,比如编译,打包等都是通过对应的插件来执行完成的,不同的操作会产生对应的文件。
    pom.xml是maven的核心,对maven工程进行描述,在文件中进行依赖管理,项目资源存储在仓库当中,通过pom.xml文件进行资源的调用

  • 仓库
    本地仓库:本地计算机上的目录文件
    中央仓库:由Maven团队维护的全球唯一的仓库
    https://repol.maven.org/maven2/
    远程仓库(私服):一般由公司搭建的私有仓库
    仓库运转:
    在这里插入图片描述
    当本地仓库中没有对应文件,本地仓库就会在远程仓库中进行查找,如果远程仓库中也没有,就会在中央仓库中进行查找(外网速度慢),如果找到会返回到远程仓库中,远程仓库保存下来,通过也返回到本地仓库当中。

  • Maven安装
    请参考Maven安装篇

  • idea中配置maven环境
    配置maven
    在build中配置maven,maven的安装目录,以及maven settings配置文件的地址,以及maven的本地仓库

  • 创建Maven
    在这里插入图片描述
    name:项目名称
    Groupld:组织名称(确定java文件包下的目录结构)
    artifactld:模块名(确定该Maven处在的目录文件)
    组织名称以及模块名还有版本号称为该Maven的坐标
    配置好之后:
    在pom.xml中存放工程信息:

    <groupId>org.example</groupId>
    <artifactId>maven_heima</artifactId>
    <version>1.0-SNAPSHOT</version>

这个就是pom.xml中表示该Maven工程的坐标

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

该标签下第一行表示项目源码使用的jdk版本,第二行表示该项目在打包的时候使用的jdk版本,第三行表示使用的字符

注意:在刚刚创建好的Maven工程的Test目录下没有配置文件目录,这是因为不常用就隐藏了,如果要调出,需要在Test下进行创建文件夹,这时会进行提示

这时候点击会出现resources文件

  • Maven坐标
    Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置
    使用坐标来定义项目或引入项目中需要的依赖
    坐标组成:
    groupld:通常是域名反写
    artifactld:定义当前Maven项目名称(通常是模块名称)
    version:定义当前的版本号

  • 如何导入Maven工程
    方式一:
    打开idea,点击右侧的Maven项目工具栏,点击+号,选中对应的pom.xml文件
    在这里插入图片描述
    方式二:通过菜单中的模块进行添加
    导入Maven

Maven依赖管理

  • 依赖配置
    依赖:指的是项目在运行时所需要的jar包,一个项目中可以引入多个依赖

如何配置:

  1. 在pom.xml中编写<dependencies>标签
  2. <dependencies>标签中使用<dependency>中引入坐标
  3. 定义坐标的groupld,artifactld,version
  4. 点击刷新按钮,引入最新加入的坐标

在这里插入图片描述
如图所示就是创建依赖的过程,当输入完之后可以在右侧的Maven面板中查询项目的依赖是否成功添加,默认是没有添加的,因为需要进行重新加载

提供Maven仓库以供大家进行依赖查找:https://mvnrepository.com/

  • Maven依赖传递
    依赖具有传递性
    传递性
    项目A需要项目B,当项目B需要依赖,所以当A导入依赖B的时候会自动将B所依赖的文件自动添加,称为项目依赖的传递性
    因为依赖的传递性所以依赖分为直接依赖和间接依赖
    如果不想要一个依赖所附带的依赖可以使用排除依赖:
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
            </exclusions>

<version>后接着写入排除依赖标签,并重新加载

  • 可视化查看项目的依赖关系
    在pom.xml文件中点击右键选择diagrams,选择show Dependencies此时会以图表的形式显示依赖之间的关系

  • 依赖范围
    依赖的jar包,默认情况下可以在任何地方使用。可以通过<scope>标签设置作用范围
    作用范围:
    主程序范围有效(main文件夹范围内)
    测试程序范围有效(test文件夹范围内)
    是否参与打包运行(package指令范围内)
    scope取值表:
    scope

    Maven的生命周期

    Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一
    Maven有三套独立的生命周期:
    clean:清理工作(主要清理项目构建后的一些字节文件,打包文件等)
    default:核心工作,如:编译,测试,打包,安装,部署等;
    site:生成报告,发布站点等

    每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段, 在同一套生命周期中,运行后面的阶段,前面的阶段也会运行

生命周期
在这里插入图片描述

常见的生命周期阶段

在idea的Maven面板栏中也可以查看常见的生命周期阶段
常见的阶段

  • 执行生命周期阶段
    方式一:通过Maven面板栏进行执行
    方式二:通过命令执行,在命令行中进入到maven项目目录下执行
    mvn clean
    mvn complie

如何绕过某一测试阶段:
在这里插入图片描述
进行点击跳过测试阶段

maven工程本身就是一个插件项目,所有的操作都是由插件完成的,每一个阶段操作都对应一个插件
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/490976.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Day48:WEB攻防-PHP应用文件上传中间件CVE解析第三方编辑器已知CMS漏洞

目录 PHP/ASP-中间件-上传相关-IIS&Apache&Nginx(解析漏洞) IIS Apache Nginx PHP-编辑器-上传相关-第三方处理引用 PHP-CMS源码-上传相关-已知识别到利用 知识点&#xff1a; 1、PHP-中间件-文件上传-CVE&配置解析 2、PHP-编辑器-文件上传-第三方引用安全 3…

单链表增序排列节点(单链表算法库拓展v2.0)

对单链表中元素进行排序(至少有2个数据节点) /************************************************** (13)函数名:LinkList_sorting 功 能:对单链表中元素进行排序(至少有2个数据节点) 参 数:LinkList *&L:要进行排序的单链表 注意: ① 空表,或者只有一个数据节点,则不需要…

企业级快速开发框架 nbsaas-boot 1.1.8-2024 发布了

<parent><groupId>com.nbsaas.boot</groupId><artifactId>nbsaas-boot</artifactId><version>1.1.8-2024</version> </parent> 本次更新内容 1. 重构代码生成器&#xff0c;采用类提取和字段提取两种方式&#xff0c;提取功能…

查看 Debian 系统版本的 6 种方式

本篇文章将为大家介绍 6 种查看 Dibian 系统发行版本号的方式。 1. 使用 lsb_release 命令 lsb_release 命令可用于查看 Linux 发行版操作系统的具体版本。它可能尚未安装在你的操作系统中&#xff0c;因此你需要先安装它。运行以下命令来安装 lsb_release&#xff1a; apt-…

云原生靶场kebernetesGoat、Metarget

靶场 文章目录 靶场kebernetesGoat靶场安装Docker in DockerSSRF漏洞容器逃逸到主系统Docker CIS 基线分析Kubernetes CIS 安全基线分析分析被部署挖矿软件的容器镜像获取环境信息Hidden in layersRBAC最低权限配置错误使用 Sysdig Falco 进行运行时安全监控和检测 Metarget ke…

MT6762_联发科MTK6762安卓核心板规格参数

MTK6762核心板是一款集成了蓝牙、fm、wlan和gps模块的高度集成基带平台&#xff0c;为LTE/LTE-A和C2K智能手机应用程序提供支持。该安卓核心板集成了ARM Cortex-A53处理器&#xff0c;工作频率可达2.0GHz&#xff0c;并且还集成了功能强大的多标准视频编解码器。除此之外&#…

VScode 内存溢出 yarn/npm内存溢出问题解决

当前目录下执行 increase-memory-limit 然后再启动

优化卡顿实力派,品质表现更出彩

游戏卡顿无疑是开发者最需要关注的重要性能问题之一。它影响玩家的游戏进程&#xff0c;并直接对玩家的游戏体验产生不良的影响。为助力开发者应对这一难题&#xff0c;在之前的版本中&#xff0c;卡顿分析页已经陆续推出了重点函数分析、卡顿点分析以及Timeline等功能&#xf…

C# wpf 嵌入winform控件

WPF Hwnd窗口互操作系列 第一章 嵌入Hwnd窗口 第二章 嵌入WinForm控件&#xff08;本章&#xff09; 第三章 嵌入WPF控件 文章目录 WPF Hwnd窗口互操作系列前言一、导入WinForm1、.Net Framwork&#xff08;1&#xff09;、右键添加引用&#xff08;2&#xff09;、勾选程序集…

DMA知识

提示&#xff1a;文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 前期疑问&#xff1a; 本文目标&#xff1a; 一、背景 2024年3月26日23:32:43 今天看了DMA存储器到存储器的DMA传输和存储器到外设的DMA实验&#xff0c;在keil仿真可以看到效果。还没有在protues和开发…

Spire.PDF for .NET【文档操作】演示:查找并删除 PDF 中的空白页

PDF 中的空白页并不罕见&#xff0c;因为它们可能是作者故意留下的或在操作文档时意外添加的。当您阅读或打印文档时&#xff0c;这些空白页可能会很烦人&#xff0c;因此可能非常有必要将其删除。在本文中&#xff0c;您将了解如何使用Spire.PDF for .NET以编程方式查找和删除…

CODESYS和AB的PLC走ETHERNET/IP

添加Ethernet->添加EtherNet_IP_Adapter_1->EtherNet_IP_Module 添加数据&#xff1a;需要发送多少就写多少 填写数量类型&#xff1a; 2.导出EDS文件&#xff0c;此处导出EDS文件需修改版本号&#xff0c;此处版本号不能与AB库中从站版本号存在冲突&#xff0c;否则在…

Go语言学习Day4:函数(上)

名人说&#xff1a;莫愁千里路&#xff0c;自有到来风。 ——钱珝 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1、函数的概念与定义①函数的概念②函数的具体定义③多返回值 2、函数参数与作用域①可变参数②形…

windows安装tomcat

安装之前需要安装jdk1.8可以参考windows安装jdk1.8-CSDN博客 一、下载tomcat Apache Tomcat - Apache Tomcat 8 Software Downloads 解压到D盘的D:\Program Files\tomcat目录下 二、配置环境变量 电脑右键属性-高级系统设置-高级-环境变量 1、在系统变量配置CATALINA_HOME环…

[flask]请求全局钩子

flask从入门到精通之钩子、异常、context、jinjia模板、过滤器 - 异步非阻塞 - 博客园 (cnblogs.com) 参考的这个博客&#xff0c;但有一个需要注意的是&#xff0c;最新版本的flask不知道是不是更新了还是怎么了&#xff0c;他的before_first_request不见了&#xff0c;如果继…

鸿蒙HarmonyOS 开发如果实现多端协同?

多端协同流程 多端协同流程如下图所示。 图1 多端协同流程图 约束限制 由于“多端协同任务管理”能力尚未具备&#xff0c;开发者当前只能通过开发系统应用获取设备列表&#xff0c;不支持三方应用接入。 多端协同需遵循 分布式跨设备组件启动规则 。 为了获得最佳体验&…

迭代实现二叉树的遍历-算法通关村

迭代实现二叉树的遍历-算法通关村 理论上&#xff0c;递归能做的迭代一定能做&#xff0c;但可能会比较复杂。有时候面试官要求不使用递归实现三种遍历&#xff0c;递归就是每次执行方法调用都会先把当前的局部变量、参数值和返回地址等压入栈中&#xff0c;后面在递归返回的时…

uniapp 使用命令行创建vue3 ts 项目

命令行创建 uni-app 项目&#xff1a; vue3 ts 版 npx degit dcloudio/uni-preset-vue#vite-ts 项目名称注意 Vue3/Vite版要求 node 版本^14.18.0 || >16.0.0 如果下载失败&#xff0c;请去gitee下载 https://gitee.com/dcloud/uni-preset-vue/repository/archive/vite-ts…

基于nodejs+vue的Spark的共享单车数据存储系统的设计与实现python-flask-django-php

本文拟采用nodejs技术和express搭建系统框架&#xff0c;后台使用MySQL数据库进行信息管理&#xff0c;设计开发的共享单车数据存储系统。通过调研和分析&#xff0c;系统拥有管理员和用户两个角色&#xff0c;主要具备个人中心、用户管理、共享单车管理、系统管理等功能模块。…

力扣爆刷第105天之CodeTop100五连刷11-15

力扣爆刷第105天之CodeTop100五连刷11-15 文章目录 力扣爆刷第105天之CodeTop100五连刷11-15一、5. 最长回文子串二、33. 搜索旋转排序数组三、102. 二叉树的层序遍历四、200. 岛屿数量五、121. 买卖股票的最佳时机 一、5. 最长回文子串 题目链接&#xff1a;https://leetcode…