Maven
第 1 章 IDEA 集成 Maven
1.1 下载及配置 Maven
- 下载 Maven
https://maven.apache.org/download.cgi,选择下载后解压
https://maven.apache.org/download.cgi,选择下载后解压
2.配置 MAVEN_HOME
第一步:新增环境变量:MAVEN_HOME
第二步:在 path 环境变量中添加:%MAVEN_HOME%\bin
第三步:测试:按住 win+R 输入cmd,进入黑窗口控制台。输入命令: mvn -v 。如果出现以下 Maven 的版本信息,则说明 Maven 的安装与环境变量的配置均正确。
1.2 修改 Maven 配置文件
- 打开下载的 Maven,找到 conf 目录下的 settings.xm
在 中添加子节点:
指定目录 F:\Program Files\maven\repository 作为本地仓库,用来存储 jar 包:
55行
国内镜像:
160行
160 <mirror>
161 <id>alimaven</id>
163 <name>aliyun maven</name>
164 <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
165 <mirrorOf>central</mirrorOf>
jdk编译版本
java工程 - 构建和编译 - maven maven默认使用jdk1.5版本构建
268行
<!--在profiles节点(标签)下添加jdk编译版本 268行附近-->
<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>
1.3 IDEA 集成 Maven 插件
第 2 章 Maven基本使用
标签 | 说明 |
---|---|
groupId | 项目的唯一标识,一般为公司域名倒写 |
artifactId | 项目名称 |
version | 版本号 |
packaging | 项目打包方式,默认为 jar,还可以是 war、rar、pom |
dependencies | 项目依赖 |
properties | 属性 |
build | 项目构建配置信息,比如 jdk 版本 |
2.1.插件创建
安装插件 JBLJavaToWeb
安装插件 JBLJavaToWeb
工程上右键 - jbljavatoweb即可
第 3 章 Maven构建功能
生命周期 | 说明 |
---|---|
clean | 清理编译项目 |
compile | 编译项目源代码 |
test | 测试,测试代码不会被打包或部署 |
package | 打包 |
install | 将包安装到本地仓库,以便其他项目依赖 |
site | 生成项目报告,站点,发布站点 |
deploy | 将包部署部署到远程仓库,与其他开发人员 |
3.1.注意:
如果在idea中进行命令触发失败,证明Maven_home配置错误好好检查!!
<build>
<!-- 解决自带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>
3.2依赖传递和依赖冲突
3.2.1依赖冲突选择原则:
第一原则: 谁短谁优先 [依赖传递的路径]
第二原则: 谁上谁优先 [pom编写的依赖位置]
3.2.2依赖冲突手动排除:
<dependency><groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.3</version>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
</exclusions>
</dependency>
第4章 聚合和继承
4.1继承语法
父工程
<groupId>com.atguigu.maven</groupId>
<artifactId>pro03-maven-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 当前工程作为父工程,它要去管理子工程,所以打包方式必须是 pom -->
<packaging>pom</packaging>
子工程
<!-- 使用parent标签指定当前工程的父工程 -->
<parent>
<!-- 父工程的坐标 -->
<groupId>com.atguigu.maven</groupId>
<artifactId>pro03-maven-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<!-- 子工程的坐标 -->
<!-- 如果子工程坐标中的groupId和version与父工程一致,那么可以省略 -->
<!-- <groupId>com.atguigu.maven</groupId> -->
<artifactId>pro04-maven-module</artifactId>
<!-- <version>1.0-SNAPSHOT</version> -->
父工程依赖统一管理
父工程声明版本
<!-- 使用dependencyManagement标签配置对依赖的管理 -->
<!-- 被管理的依赖并没有真正被引入到工程 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.0.0.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
子工程引用版本
<!-- 子工程引用父工程中的依赖信息时,可以把版本号去掉。 -->
<!-- 把版本号去掉就表示子工程中这个依赖的版本由父工程决定。 -->
<!-- 具体来说是由父工程的dependencyManagement来决定。 -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
</dependencies>
4.2聚合语法
父项目中包含的子项目列表
<project>
<groupId>com.example</groupId>
<artifactId>parent-project</artifactId>
<packaging>pom</packaging>
<version>1.0.0</version>
<modules>
<module>child-project1</module>
<module>child-project2</module>
</modules>
</project>
聚合演示
通过触发父工程构建命令、引发所有子模块构建!产生反应堆!