5

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

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

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

4

2 回答 2

3

显然,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)

于 2016-07-11T18:31:30.490 回答
2

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

于 2013-03-26T08:56:09.053 回答