显然,Eclipse Maven 插件在 Maven 构建期间会忽略环境变量。一种可能的解决方法 - 根据您的情况可能会起作用 - 是使用 settings.xml 中的属性。唯一的缺点是您必须将这些变量定义为环境变量,并在 settings.xml 中再次定义
在我的回答中,我描述了以下场景。使用标准 maven 插件功能在 eclipse 中构建工件,并通过 maven 命令行另外构建相同的工件。同样在命令行构建期间,我直接引用存储库文件夹 mvn -Dmaven.repo.local=/PATH_TO_M2_FOLDER/repository/ -f parent.pom install
设置如下:您必须在 pom.xml 中添加属性以充当环境变量的代理。在命令行场景中,这些属性将被直接填充。在 Eclipse 场景中,属性必须由用户 settings.xml 通过定义配置文件来填充。
假设您有一个环境变量 $FOO 的属性。
在您的 maven settings.xml 中使用配置文件并定义 fooProperty。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<profiles>
<profile>
<id>default</id>
<properties>
<fooProperty>bar</fooProperty >
</properties>
</profile>
</profiles>
...
<activeProfiles>
<activeProfile>default</activeProfile>
</activeProfiles>
</settings>
然后,您只需将 Eclipse maven 插件指向您的用户设置。要让 CLI 正常工作,您必须在 pom.xml 中再次定义 fooProperty:${env.foo}
显然,eclipse maven 插件将 settings.xml 中的属性优先于 pom.xml 中的属性。不幸的是,我还没有想出通过环境变量在 settings.xml 中定义属性的方法。
在 pom.xml 中使用变量时,仅使用如下代理属性: ... ${fooProperty} ...
我正在使用 * Eclipse Mars: Release (4.5.0) * Embedded Maven: 3.3.3/1.6.0.20150526-2031 * OSX El Capitan: 10.11.4 (15E65)