[英]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 變量示例:
(注意:我使用的是 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。 這是設置:
在 shell 腳本中設置變量。 如果您在子腳本中啟動 Maven,請確保變量已設置,例如使用source ./maven_script.sh
從父腳本調用它。
在 shared-pom 中,創建一個命令行參數來獲取環境變量:
<plugin> ... <executions> <executions> ... <execution> ... <configuration> <param>${foo}</param> <!-- Note this is *not* ${env.foo} --> </configuration>
在 com.google.code.maven-replacer-plugin 中,將替換值${foo}
。
在我調用 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.