对于这个用例,您可能有三种可能性
MAVEN_OPTS
您可以使用 MAVEN_OPTS 环境变量将所需的 JVM 选项传递给 Maven 构建(对于整个构建,因此适用于所有涉及的插件/目标执行):
export MAVEN_OPTS="-Djava.library.path=<path_to_dir>"
但是,这也将应用于同一环境所涉及的所有其他构建。在 Jenkins 作业中,您仍然可以为每个作业配置此变量,因此在某个构建中被隔离。
.mvn 设置
由于 Maven 3.3.1,您可以将 .mvn 文件夹作为相关项目的一部分,并将 jvm.config 文件作为此类选项的理想位置。
两个新的可选配置文件.mvn/jvm.config 和.mvn/maven.config,位于项目源代码树的基目录。如果存在,这些文件将提供默认的 jvm 和 maven 选项。因为这些文件是项目源代码树的一部分,所以它们会出现在所有项目签出中,并且会在每次构建项目时自动使用。
作为官方release notes的一部分
在 Maven 中,基于每个项目定义 JVM 配置并不简单。基于环境变量MAVEN_OPTS 的现有机制和${user.home}/.mavenrc 的使用是另一种选择,缺点是不属于项目。
从此版本开始,您可以通过 ${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.projectBasedir}/.mvn/jvm.config 文件因此可以提供以下内容:
-Djava.library.path=<path_to_dir>
这种方法的主要优点是配置与相关项目隔离并应用于整个构建。
插件配置
您应该将其设置为相关的插件和配置条目(如果有)。
例如,Maven Compiler Plugin 为 JVM 选项提供了 compilerArgs 配置条目,Maven Surefire Plugin 为相同的选项提供了argLine 配置选项,等等。
这是最不推荐的方法,因为配置会重复并且通常甚至不可能(取决于插件的可配置性)。但是,如果用例真的被隔离到某个插件执行(编译、测试等),那么它可能仍然是合理的。