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

标签 eclipse maven

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

Unable to download xyz-{$env.MyProjectVersion} dependency



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

最佳答案

显然 Eclipse Maven 插件在 Maven 构建期间忽略了环境变量。一种可能的解决方法(根据您的情况可能有效)是使用 settings.xml 中的属性。唯一的缺点是您必须将这些变量定义为环境变量,并在 settings.xml 中再次定义

在我的回答中,我描述了以下场景。
使用标准 maven 插件功能在 eclipse 中构建 Artifact ,并通过 maven 命令行额外构建相同的 Artifact 。
同样在命令行构建期间,我直接引用存储库文件夹
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:发布(4.5.0)
* 嵌入式 Maven:3.3.3/1.6.0.20150526-2031
* OSX El Capitan:10.11.4 (15E65)

关于eclipse - Maven - 如何从 Eclipse 引用环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15632804/

相关文章:

java - 在 Maven 变量中获取 UID?

java - 安卓重命名: unable to find explicit activity class

java - Eclipse:与源目录隔离的项目目录

java - Tomcat 7 服务器不会加载类 : ClassNotFoundException

javascript - 用于版本控制和缩小 javascript 的 Maven 插件

java - maven 存储库扫描后从 jqassistant 获取注释

eclipse - 如何在 Netbeans for Java 项目中导入 Eclipse 语法高亮配置文件?

java - 从进度监视器对话框更改托盘图标工具提示

Spring 启动: GroupId and ArtifactId based on a property dynamically

java - 如何知道哪个 PMD 规则失败?