1. Maven简介
Maven相关概念:
Apache公司开发的开源项目管理工具,主要用于依赖管理和项目构建,适用于多种编程语言(如Java、C#、Ruby、Scala等),方便下载和储存jar包.
依赖管理:
当项目A需要项目B的资源时,这种关系称为依赖关系,依赖关系需要进行管理。
项目构建:
项目构建是指从源文件到可执行文件的过程,通常包括七个步骤:清理、编译、测试、报告、打包、安装和部署。
2.Maven的安装配置
Maven下载链接:Maven – Download Apache Maven
Maven是绿色版本,解压即用。
使用Maven之前需要配置环境:配置JAVA_HOME环境变量及PATH
配置MAVEN_HOME环境变量及PATH
解压路径不包含中文及空格
在命令行中输入mvn -v验证安装
使用Maven版本为3.8.8(需要最低JDK版本7),使用JDK17。
2.1设置本地仓库位置
<!-- 设置本地仓库位置 -->
<localRepository>D:\\repository</localRepository>
2.2设置阿里云镜像:
<!-- 在mirrors节点下添加中央仓库镜像 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
2.3设置JDK版本:
<!-- 在profiles节点下添加jdk编译版本 -->
<profile>
<id>jdk-17</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>17</jdk>
</activation>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
</properties>
</profile>
3.Maven基本
仓库文件:jar包,配置文件
仓库种类:本地仓库,远程仓库
Maven坐标: Maven中使用坐标设置jar包在仓库中的位置及版本,从而引入jar包.
语法:
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
坐标中的三个向量:
groupId:Maven工程公司或组织域名倒序
artifactId:Maven工程项目名称
version:Maven工程版本(主版本号-次版本号-修订号)
gav特点:
g-a-v:jar包在仓库中的位置
a-v:jar包名称
packaging:
打包方式: ava工程-jar(默认值)
web工程-war
父工程-pom(不打包)
4.Maven项目构建
清理:清理上一次编译后产生的文件,target文件.
编译:将Java源文件编译成class文件,并存储在target/classes目录下。
测试:运行test目录下的测试代码,并将编译后的文件存储在target/test-classes目录下。
打包:根据项目类型打包(Java项目为jar包,Web项目为war包)。
安装:将打包后的文件安装到本地仓库,以供其他项目使用。
部署:将打包后的文件部署到远程仓库,以供其他项目使用。
报告:生成Maven项目的相关报告,如HTML格式的项目报告。
<build>
<!-- jdk17和打war包和site插件版本插件不匹配 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.9.1</version> <!-- 此处替换为你所需的版本号 -->
</plugin>
</plugins>
</build>
Maven项目构建中的生命周期
定义Maven命令的执行顺序,主要包括以下三个生命周期:
清理周期:负责项目清理工作。命令:mvn clean
默认周期:执行项目构建的主要任务,包括编译、测试、打包、安装和部署。命令:mvn compile、mvn test、mvn package、mvn install、mvn deploy
注意:这些命令按顺序执行,执行后续命令时会自动执行前面的所有命令。
报告周期:生成项目报告。命令:mvn site
5.依赖管理
概念:如果项目A需要项目B中资源,我们称项目A依赖项目B,项目与项目之间依赖关系需要被管理,简称:依赖管理 ,jar包之间依赖管理关系.
在pom.xml
文件中添加依赖:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.6</version>
</dependency>
</dependencies>
依赖范围:定义依赖在项目中的作用域,如编译、测试、运行时等。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.1</version>
<!-- 依赖范围 -->
<scope>test</scope>
</dependency>
依赖传递性:如果项目A依赖项目B,而项目B依赖项目C,那么项目A也间接依赖项目C。只有compile
范围的依赖具有传递性。
依赖排除:在某些情况下,可以排除不需要的依赖
<dependency>
<groupId>com.atguigu</groupId>
<artifactId>B</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
依赖冲突:当不同版本的相同依赖同时存在时,Maven会选择路径最短或先声明的依赖。
依赖终止:非compile范围的依赖不会传递,从而终止依赖链。
提取/引入版本号:通过定义属性统一管理依赖版本。
<properties>
<log4j-version>1.2.17</log4j-version>
</properties>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j-version}</version>
</dependency>