Maven 的环境变量

新手上路,请多包涵

我已经将一个项目从 Eclipse 移植到 Maven,我需要设置一个环境变量以使我的项目运行。

在 Eclipse 中,我转到“运行 -> 运行配置”,然后在“环境”选项卡下,将“WSNSHELL_HOME”设置为值“conf”。

我怎样才能用 Maven 做到这一点?

原文由 Gianluca 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 845
2 个回答

您可以在命令行上传递它,如

mvn -DmyVariable=someValue install

[更新] 请注意,参数的顺序很重要 - 您需要在命令 之前 指定任何选项。 [/更新]

在 POM 文件中,您可以将系统变量(在命令行或 pom 中指定)引用为 ${myVariable} ,并将环境变量引用为 ${env.myVariable}(感谢评论者指正。)

更新2

好的,所以你想将你的系统变量传递给你的测试。如果 - 正如我假设的那样 - 你使用 Surefire 插件 进行测试,最好是在 pom 中指定所需的系统变量,在你的 plugins 部分,例如

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            ...
            <configuration>
                ...
                <systemPropertyVariables>
                    <WSNSHELL_HOME>conf</WSNSHELL_HOME>
                </systemPropertyVariables>
            </configuration>
        </plugin>
        ...
    </plugins>
</build>

原文由 Péter Török 发布,翻译遵循 CC BY-SA 4.0 许可协议

-D 属性不会可靠地从 surefire-pluging 传播到您的测试(我不知道为什么它适用于 eclipse)。在命令行上使用 maven 时,请使用 argLine 属性来包装您的属性。这会将它们传递给您的测试

mvn -DargLine="-DWSNSHELL_HOME=conf" test

使用 System.getProperty 读取代码中的值。看看 这篇 关于 System.getenvSytem.getProperty 的区别的帖子。

原文由 FrVaBe 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题