如何在POM.xml中引用环境变量?

use*_*403 156 java environment-variables pom.xml maven

我使用maven作为构建工具.我已经设置了一个名为的环境变量env.如何在pom.xml文件中访问此环境变量的值?

And*_*ite 199

查看Maven属性指南 ...

正如Seshagiri在评论中指出的那样,${env.VARIABLE_NAME}会做你想做的事.

我会添加一个警告,并说pom.xml应该完整地描述你的项目,所以请明智地使用环境变量.如果您的构建取决于您的环境,则它们更难以重现

  • 注意:pom中variable_name的所有字符必须是大写的,才能与平台无关.因为它仅在Windows操作系统上运行的大写形式有效.例如,$ {env.M2_HOME}有效,$ {env.m2_home}无效,即使您定义了名为m2_home的环境变量. (9认同)
  • 环境变量非常有用,这里推荐使用它们,例如 https://12factor.net/。由于容器和 kubernets,这些变量变得越来越重要:您可以简单地将机密保存在 kubernets 中,并在启动时将它们添加到您的容器环境中。 (4认同)
  • 此外,它使您的构建平台和系统依赖. (2认同)

Eri*_*reg 25

将环境变量直接传递给maven系统属性可能更安全.例如,在Linux上,您想要访问环境变量MY_VARIABLE.您可以在pom文件中使用系统属性.

<properties>
    ...
    <!-- Default value for my.variable can be defined here -->
    <my.variable>foo</my.variable>
    ...
</properties>
...
<!-- Use my.variable -->
... ${my.variable} ...
Run Code Online (Sandbox Code Playgroud)

在maven命令行上设置属性值:

mvn clean package -Dmy.variable=$MY_VARIABLE
Run Code Online (Sandbox Code Playgroud)

  • 为什么这样更安全? (4认同)

Car*_*Way 19

此外,请确保您的环境变量由大写字母仅由 ....我不知道为什么(文档没有什么明确的关于它说,至少@Andrew白提供的链接),但如果变量是一个小写字(例如env.dummy),变量总是空或空...

我正在努力解决这个问题,直到我决定尝试UPPER CASE VARIABLE,问题解决了.

OK变量示例:

  • DUMMY_ONE
  • JBOSS_SERVER_PATH

(注意:我使用的是maven v3.0.5)

我希望这可以帮助某人......

  • unix中的环境变量区分大小写,传统上给出大写名称,这样当您查看shell中设置的变量时,您可以轻松区分哪些在本地设置为shell,哪些对子进程可见.Windows中的环境变量似乎不区分大小写,但我还没有从文档中验证,只能从命令提示符下的小实验中验证. (5认同)

小智 10

我们不能用

<properties>
    <my.variable>${env.MY_VARIABLE}</my.variable>
</properties>
Run Code Online (Sandbox Code Playgroud)

  • 这有效吗?我已经尝试过,但不是,至少在我的环境中不是 (2认同)

小智 5

我也在努力解决同样的问题,运行一个设置变量的 shell 脚本,然后想要使用共享 pom 中的变量。目标是使用 com.google.code.maven-replacer-plugin 让环境变量替换项目文件中的字符串。

使用${env.foo}${env.FOO}对我不起作用。Maven 只是没有找到该变量。有效的方法是将变量作为 Maven 中的命令行参数传递。这是设置:

  1. 在 shell 脚本中设置变量。如果您在子脚本中启动 Maven,请确保已设置变量,例如使用source ./maven_script.sh从父脚本调用它。

  2. 在shared-pom中,创建一个获取环境变量的命令行参数:

<插件>
  ...
  <处决>
    <处决>
    ...
      <执行>
      ...
        <配置>
          <param>${foo}</param> <!-- 注意这*不是* ${env.foo} -->
        </配置>
  1. 在 com.google.code.maven-replacer-plugin 中,设置替换值${foo}

  2. 在我调用 maven 的 shell 脚本中,将其添加到命令中:-Dfoo=$foo