Maven
概述
Maven是一个强大的项目管理和构建自动化工具,主要用于Java项目。它由Apache软件基金会开发,旨在简化构建过程、依赖管理和项目信息管理。以下是Maven的主要作用:
1、依赖管理:Maven可以帮助你管理项目依赖的第三方库。通过在POM(project object model)文件中声明依赖,Maven会自动下载并引入这些依赖,避免了版本冲突问题、手动管理的麻烦。
如果手动下载jar包并导入,不仅面临下载麻烦,更新版本、替换jar包时还需要更换大量资源,费时费力。
使用Maven后,我们不需要导入任何jar包,只需要在Maven工程的pom.xml配置文件中添加依赖描述信息即可:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>/*依赖名称*/</artifactId>
<scope>/*依赖版本*/</scope>
</dependency>
</dependencies>
添加后系统会在仓库中查找相应的资源并添加,仓库有三种:
- 本地仓库:本地用于存储jar包的目录
- 中央仓库:由 Maven 团队维护的全球唯一的仓库,地址:Central Repository:
- 远程仓库(私服):一般由公司团队搭建的私有仓库
系统会先在本地仓库查找,有则添加,无则连接中央仓库下载,但因中央仓库为海外地址,下载速度较慢,我们选择引入远程仓库作为媒介,查找顺序:本地仓库->远程仓库->中央仓库
2、统一项目结构:因为开发软件的不同,所以早期的java项目会出现同一文件不同版本无法识别的情况,而Maven提供了一套标准的项目结构,使项目无论在哪个编译器中都可正常运行
- Maven构建的项目
- src
- main:实际项目资源
- java:java源代码目录
- resources:配置文件目录
- test:测试项目资源
- java
- resources
- pom.xml:项目配置文件
- main:实际项目资源
- src
3、项目构建:Maven提供了一套跨平台标准的项目构建流程,原始java文件需要 编译—测试—打包—发布 一系列流程,较为繁琐。而通过Maven我们可以输入对应的指令,系统会自动进行相应的操作
安装与配置
1、搜索maven安装包并下载解压
2、配置本地仓库:修改conf/settings.xml中的<localRepository>为一个指定目录
<localRepository>/*指定路径*/</localRepository>
3、配置阿里云私服:修改conf/settings.xml中的<mirrors>标签,为其添加如下子标签:
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
4、配置环境变量
新建系统变量:变量名:MAVEN_HOME,变量值:安装目录,再将path环境变量中,添加 %MAVEN_HOME%\bin
IDEA集成Maven
创建Maven项目
选择文件→新建→项目,在Spring initializer 选项中勾选java和maven,并
在 src→main→java目录下创建java类,例 com.example.myproject,其中 com.example 为包名,myproject 为类名
此时test目录下的resources文件因为不常用,所以并未创建,我们可以右键java目录→directory,会出现快捷创建resources文件的选项
此时我们补全代码并运行,目录下会自动生成 target 文件用于存放java代码编译后产生的字节码文件
坐标
在Maven中,坐标(Coordinate)是资源的唯一标识,通过该坐标可以唯一定位资源位置。坐标由以下三个主要元素组成:
- groupId:定义项目所在的组或组织。通常采用反向域名表示法,例如 com.example。
- artifactId:定义Maven项目名称。这个ID应该是小写的,
- version:定义项目版本号。版本号通常包含三个数字,以点分隔,例如 1.0.0
<groupId>org.example</groupId>
<artifactId>maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
IDEA导入Maven项目
导入Maven项目有两种方式
方式一:
点击idea右侧Maven面板,点击+号,选中对应的pom.xml文件,双击即可。
如果没有Maven面板,点击View→Appearance→Tool Windows Bars
方式二:
点击File→Project Structure→+→import Module→选择pom.xml→OK
依赖管理
依赖配置
依赖指当前项目运行所需要的jar包,一个项目中可以引入多个依赖
在Maven项目中,依赖通过在项目的pom.xml文件中的<dependencies>部分声明,可声明多个依赖,而每个依赖项都使用<dependency>标签包裹:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
修改完依赖后点击按钮,等待下载完成后依赖即可生效。
依赖传递
Maven具有依赖传递特性,这意味着如果你声明了一个依赖,它所依赖的库也会被自动添加到项目中。
例如,如果你依赖了projectA,而projectA又依赖于projectB和其他jar包,那么projectB及其依赖,还有其他projectA依赖的jar包也会被添加到你的项目中。
其中 projectB 和第一个jar包为直接依赖,其余为间接依赖
- 直接依赖:项目
pom.xml
中明确声明的依赖,是项目功能实现所必需的。 - 间接依赖:项目通过直接依赖引入的其他库,不是项目直接声明的,但同样需要下载。
依赖排除
如果需要排除某个传递性依赖,可以使用<exclusions>标签。其与添加依赖相似,但无需使用版本号,可通过<scope>......</scope>设置其作用范围:
scope值 | 主程序(main) | 测试程序(test) | 打包运行(package) |
compile(默认) | √ | √ | √ |
test | √ | ||
provided | √ | √ | |
runtime | √ | √ |
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.10</version>
<!--排除依赖-->
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<scope>test</scope>
</exclusion>
</exclusions>
</dependency>
生命周期
Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一。它定义了三个内置的生命周期,每个生命周期包含了一系列的阶段(Phase),这些阶段是构建项目的有序步骤,我们选取其中的五个较为重要的阶段来学习(在同一套生命周期中,阶段是有先后顺序的,后面的阶段是需要依赖于前面的阶段)。
1. 清理(Clean)生命周期:清理工作
- clean:清理上一次构建生成的文件。
2. 默认(Default)生命周期:核心工作,如:编译、测试、打包、安装、部署等
- compile:编译项目的源代码。
- test:使用适当的单元测试框架(如JUnit)运行单元测试
- package:将编译后的代码打包成可分发格式,如JAR、WAR等。
- install:将包安装到本地仓库,供本地其他项目使用。
3. 站点(Site)生命周期:生成报告,发布站点等
执行
执行指定的生命周期有两种方法
一、点击idea右侧的Maven工具栏,双击执行所需要的生命周期,也可以选择跳过test阶段
二、在命令行中,通过指令执行:打开项目所在目录,输入cmd,输入mvn clean或其他指令执行程序。
实际上Maven的生命周期及其各个阶段都是抽象的概念,其并不执行具体的操作,其操作由与其绑定的插件来完成,因为Maven本身就是一个插件执行框架
原文地址:https://blog.csdn.net/qq_65501197/article/details/143428399
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!