持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第03天,点击查看活动详情
今天我们来学习下如何用 Maven 来管理并构建 Spring Boot 项目。我们继续使用之前的 payroll 工程。
01-使用 Maven 构建多模块项目
接下来,我们将为 payroll 项目增加两个子模块,library 和 examples。主要步骤如下:
-
在 payroll/pom.xml 中增加如下内容:
<modules> <module>library</module> <module>examples</module> </modules> -
与 payroll/pom.xml 同级新建两个目录,library 和 examples,它们的目录结构与 payroll 类似:
└── library └── src └── main/java └── test/java └── pom.xml └── examples └── src └── main/java └── test/java └── pom.xml └── pom.xml -
payroll/library/pom.xml 中增加如下内容:
<parent> <artifactId>payroll</artifactId> <groupId>self.samson.example</groupId> <version>0.0.1-SNAPSHOT</version> </parent> -
构建多模块项目。
Maven 中处理多模块项目的机制也被称作 reactor,它的功能包括:
- 收集所有需要构建的模块
- 对模块进行排序,得到一个恰当到的构建顺序
- 按照顺序构建模块
所以,当对一个多模块项目执行
mvn install的时候,会按照 reactor 的工作模式进行构建。 如果只需要构建某个模块,可以通过mvn install -pl module1,module2的方式指定要构建的模块;或者也可通过mvn install -f module1/pom.xml方式指定某个模块。
02-使用 Maven Wrapper
Maven Wrapper 是受 Gradle Wrapper 启发而来。它将 Maven 构建工具与项目工程打包放在一起,屏蔽了不同机器上构建环境不同而带来的一系列问题。
回想一下,在没有使用 Maven Wrapper 之前,我们是如何用 Maven 构建项目的,即mvn clean install,而使用 Maven Wrapper 之后呢?./mvnw clean install。
可以看到,使用方式基本没有什么变化。
仔细观察下我们使用的项目 payroll,与 Maven Wrapper 相关的有如下几部分:
- .mvn/wrapper
- mvnw
- mvnw.cmd
注:后两个分别是 *nix 和 windows 平台用于替代 mvn 的可执行脚本。
如何将 Maven Wrapper 引入到项目中呢?在项目根目录下执行:
mvn wrapper:wrapper -Dmaven=3.5.4
注:3.5.4 指的是 Maven Wrapper 使用得 mvn 版本。如果要修改 mvn 的版本,可以修改 ${project.dir}/.mvn/wrapper/maven-wrapper.properties 中的 distributionUrl 即可。例如:
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip
使用 mvnw 时,每次都会检查 {project.dir}/.mvn/wrapper/maven-wrapper.properties 中指定的 mvn 版本,若没有则自动下载。
mvnw 使用的 settings.xml 文件必须在 {maven_home}/conf 下的 settings.xml 配置不生效。