配置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中使用这些选项,也不需要在不同的配置之间切换。

posted on 2021-07-16 17:52  哑吧  阅读(2488)  评论(0编辑  收藏  举报