配置Apache Maven
Apache Maven使用本身和项目的配置存在于许多地方:
"MAVEN_OPTS"环境变量:
此变量包含用于启动运行JVM的Maven的参数,并可用于为其提供附加选项。例如,JVM内存设置可以定义为-Xms256m -Xmx512m。
"settings.xml"文件:
位于USER_HOME
/.m2的设置文件被设计为包含任何跨项目使用Maven的配置。
settings.xml文件详解
".mvn"目录:
maven文件位于项目的顶级目录中,maven.config、jvm.config和extensions.xml包含用于运行Maven的项目特定配置。
此目录是项目的一部分,可以签入到版本控制中。
".mvn/extensions.xml"文件:
旧的方法(直到Maven 3.2.5)是创建一个包含扩展的jar(must be shaded if you have other dependencies) ,然后手动将它放到${MAVEN_HOME}/lib/ext
目录中。这意味着您必须更改Maven安装。结果是,每个喜欢使用它的人都需要更改它的安装,这使得开发人员的安装更加不方便。另一种选择是在命令行上通过mvn -Dmaven.ext.class.path=extension.jar
给出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定义为任何其他构件。此外,这些扩展的所有传递依赖项将自动从存储库中下载。所以不需要再创建shaded 工件了。
".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中使用这些选项,也不需要在不同的配置之间切换。