配置 Apache Maven
Apache Maven 使用本身和构建项目的配置位于多个位置:
MAVEN_OPTS
环境变量:
此变量包含用于启动运行 Maven 的 JVM 的参数,并可用于为其提供其他选项。例如,JVM 内存设置可以用值 -Xms256m -Xmx512m
来定义。
MAVEN_ARGS
环境变量:
从 Maven 3.9.0 开始,此变量包含传递给 Maven 的参数,然后再包含 CLI 参数。例如,可以使用值-B -V checkstyle:checkstyle
定义选项和目标。
settings.xml
文件:
设置文件位于 USER_HOME/.m2 中,旨在包含跨项目使用 Maven 的任何配置.
.mvn
目录:
这些文件位于项目的顶级目录中
maven.config
jvm.config
extensions.xml
包含用于运行 Maven 的项目特定配置.
该目录是项目的一部分,可以签入您的版本控制中.
.mvn/extensions.xml
文件:
旧方法(Maven 3.2.5 之前)是创建一个包含扩展的 jar(如果您有其他依赖项,则必须着色)并将其手动放入 ${MAVEN_HOME}/lib/ext
目录中。这意味着您必须更改 Maven 安装。结果是,每个喜欢使用它的人都需要更改它的安装,并使开发人员的入职更加不方便。另一种选择是通过 mvn -Dmaven.ext.class.path=extension.jar
在命令行上提供 jar 的路径。这样做的缺点是,每次调用 Maven 时,都会将这些选项提供给 Maven 构建。也不是很方便。
从现在开始,这可以更简单,更像 Maven 的方式完成。因此,您可以定义一个 .mvn/extensions.xml
文件,如下所示:
<extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
<extension>
<groupId/>
<artifactId/>
<version/>
</extension>
</extensions>
现在,您可以通过将常用的 Maven 坐标 groupId、artifactId、version 定义为任何其他工件来简单地使用扩展。此外,这些扩展的所有传递依赖项都将自动从您的存储库下载。因此不再需要创建阴影工件.
.mvn/maven.config
文件:
很难定义一组用于调用 maven 命令行的通用选项。从 Maven 3.3.1+ 开始,这可以通过将此选项放入脚本来解决,但现在可以通过定义包含 mvn
命令行配置选项的.mvn/maven.config
文件来简单完成.
例如,像 -T3 -U --fail-at-end
这样的东西。因此,您只需使用mvn clean package
而不是 mvn -T3 -U --fail-at-end clean package
来调用 Maven,并且不要错过每次调用时的 -T3 -U --fail-at-end
选项。.mvn/maven.config
位于项目的顶级 .mvn
目录中,如果位于多模块构建的根目录中,则该目录也有效.
注意从 Maven 3.9.0开始,每个参数都必须放在新行中,因此对于提到的示例,您的文件将包含如下内容:
-T3
-U
--fail-at-end
.mvn/jvm.config
文件:
从 Maven 3.3.1+ 开始,您可以通过 .mvn/jvm.config
文件定义 JVM 配置,这意味着您可以基于每个项目定义构建选项。此文件将成为项目的一部分,并将与您的项目一起签入。因此,不再需要MAVEN_OPTS
,.mavenrc
文件.
例如,如果您将以下 JVM 选项放入.mvn/jvm.config
文件中
-Xmx2048m -Xms1024m -XX:MaxPermSize=512m -Djava.awt.headless=true
您无需在MAVEN_OPTS
中使用这些选项,也无需在不同配置之间切换.
其他指南
以下指南包含特定配置方面的更多信息: