Maven - 如何从eclipse中引用环境变量

时间:2013-03-26 08:52:06

标签: eclipse maven

我有一个maven项目。在pom.xml中,我将环境变量称为${env.MyProjectVersion}。在构建项目之前,我从命令提示符设置变量的值(export MyProjectVersion=1.0.0)。构建成功,我将maven项目导入 eclipse m2eclipse 尝试构建失败:

  

无法下载xyz - {$ env.MyProjectVersion}依赖

Eclipse 无法解析环境变量的值。有没有办法用eclipse指定环境变量值,以便eclipse中的maven插件可以选择它。

2 个答案:

答案 0 :(得分:2)

显然,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中使用变量时,只使用proxy属性,如下所示:     ...... $ {fooProperty} ...

我正在使用 * Eclipse Mars:发布(4.5.0) * Embedded Maven:3.3.3 / 1.6.0.20150526-2031 * OSX El Capitan:10.11.4(15E65)

答案 1 :(得分:1)

转到“运行配置”,“转到环境”选项卡,添加变量,其值比变量值将被解析