【问题标题】:Maven - How to refer environment variable from eclipseMaven - 如何从 Eclipse 中引用环境变量
【发布时间】:2013-03-26 08:52:06
【问题描述】:

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

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

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

【问题讨论】:

    标签: eclipse maven


    【解决方案1】:

    显然,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) * 嵌入式 Maven:3.3.3/1.6.0.20150526-2031 * OSX El Capitan:10.11.4 (15E65)

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 因为我希望 Eclipse Maven 插件能够理解 env.MyProjectVersion 以便它可以知道依赖项的完整路径,在特定类的运行配置中指定(假设我想运行一个类main 方法)将无济于事。我说的对吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      相关资源
      最近更新 更多