配置 Apache Maven
Apache Maven 使用本身和构建的项目的配置位于许多地方:
MAVEN_OPTS
环境变量:
此变量包含用于启动运行 Maven 的 JVM 的参数,并可用于为其提供附加选项。例如,JVM 内存设置可以用 value 来定义-Xms256m -Xmx512m
。
MAVEN_ARGS
环境变量:
从 Maven 4 开始,此变量包含在 CLI 参数之前传递给 Maven 的参数。例如,选项和目标可以用 value 来定义
-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
. 这样做的缺点是每次调用 Maven 时都会为 Maven 构建提供这些选项。也不是很方便。
从现在开始,这可以更简单,更类似于 Maven 的方式来完成。因此,您可以定义如下所示的${maven.projectBasedir}/.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+ 开始,这可以通过将此选项放入脚本来解决,但现在可以通过定义${maven.projectBasedir}/.mvn/maven.config
包含mvn
命令行配置选项的文件来简单地完成。
例如像-T3 -U --fail-at-end
. 因此,您只需使用mvn clean package
而不是调用 Maven,mvn -T3 -U --fail-at-end clean package
并且不会错过-T3 -U --fail-at-end
每次调用的选项。位于
目录${maven.projectBasedir}/.mvn/maven.config
中;${maven.projectBasedir}/.mvn/
如果在多模块构建的根目录中也可以使用。
.mvn/jvm.config
文件:
从 Maven 3.3.1+ 开始,您可以通过${maven.projectBasedir}/.mvn/jvm.config
文件定义 JVM 配置,这意味着您可以在每个项目基础上定义构建选项。该文件将成为您项目的一部分,并将与您的项目一起签入。所以不再需要MAVEN_OPTS
,.mavenrc
文件。因此,例如,如果您将以下 JVM 选项放入${maven.projectBasedir}/.mvn/jvm.config
文件中
-Xmx2048m -Xms1024m -XX:MaxPermSize=512m -Djava.awt.headless=true
您无需在不同配置中使用这些选项MAVEN_OPTS
或在不同配置之间切换。
其他指南
以下指南包含有关特定配置方面的更多信息: