簡體   English   中英

如何在 POM.xml 中引用環境變量?

[英]How to refer environment variable in POM.xml?

我使用 maven 作為構建工具。 我設置了一個名為env的環境變量。 如何在pom.xml文件中訪問此環境變量的值?

查看Maven 屬性指南...

正如 Seshagiri 在評論中指出的那樣, ${env.VARIABLE_NAME}會做你想做的。

我將添加一個警告並說pom.xml應該完整地描述您的項目,因此請謹慎使用環境變量。 如果您的構建依賴於您的環境,則它們更難重現

將環境變量直接傳遞給 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} ...

在 maven 命令行中設置屬性值:

mvn clean package -Dmy.variable=$MY_VARIABLE

另外,請確保您的環境變量僅由大寫字母組成......我不知道為什么(文檔沒有明確說明它,至少是@Andrew White 提供的鏈接),但是如果變量是一個小寫單詞(例如 env.dummy),變量總是為空或為空...

我為此苦苦掙扎了一個小時,直到我決定嘗試一個大寫變量,問題解決了。

OK 變量示例:

  • 假的
  • DUMMY_ONE
  • JBOSS_SERVER_PATH

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

我希望這可以幫助某人......

我們不能用嗎

<properties>
    <my.variable>${env.MY_VARIABLE}</my.variable>
</properties>

我正在為同樣的事情苦苦掙扎,運行一個設置變量的 shell 腳本,然后想使用共享 pom.xml 文件中的變量。 目標是使用 com.google.code.maven-replacer-plugin 讓環境變量替換我的項目文件中的字符串。

使用${env.foo}${env.FOO}對我不起作用。 Maven 只是沒有找到變量。 有效的是將變量作為命令行參數傳入 Maven。 這是設置:

  1. 在 shell 腳本中設置變量。 如果您在子腳本中啟動 Maven,請確保變量已設置,例如使用source ./maven_script.sh從父腳本調用它。

  2. 在 shared-pom 中,創建一個命令行參數來獲取環境變量:

<plugin>
  ...
  <executions>
    <executions>
    ...
      <execution>
      ...
        <configuration>
          <param>${foo}</param> <!-- Note this is *not* ${env.foo} -->
        </configuration>
  1. 在 com.google.code.maven-replacer-plugin 中,將替換值${foo}

  2. 在我調用 maven 的 shell 腳本中,將其添加到命令中: -Dfoo=$foo

您可以使用<properties>標簽來定義自定義變量和${variable}模式來使用它

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <!-- define -->
    <properties>
        <property.name>1.0</property.name>
    </properties>

    <!-- using -->
    <version>${property.name}</version>

</project>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM