[英]Environment Variable with Maven
我已經將一個項目從 Eclipse 移植到 Maven,我需要設置一個環境變量來使我的項目工作。
在 Eclipse 中,我轉到“運行 -> 運行配置”,然后在“環境”選項卡下,將“WSNSHELL_HOME”設置為值“conf”。
我怎樣才能用Maven
做到這一點?
您可以在命令行上傳遞它,如
mvn -DmyVariable=someValue install
[更新]請注意,參數的順序很重要 - 您需要在命令之前指定任何選項。 [/更新]
在 POM 文件中,您可以將系統變量(在命令行或 pom 中指定)稱為${myVariable}
,將環境變量稱為${env.myVariable}
。 (感謝評論者的更正。)
好的,所以你想將你的系統變量傳遞給你的測試。 如果 - 正如我所假設的 - 你使用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>
您可以將 maven 命令包裝在 bash 腳本中:
#!/bin/bash
export YOUR_VAR=thevalue
mvn test
unset YOUR_VAR
對於 Maven 中的環境變量,您可以在下面設置。
http://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#environmentVariables http://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html #環境變量
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
...
<configuration>
<includes>
...
</includes>
<environmentVariables>
<WSNSHELL_HOME>conf</WSNSHELL_HOME>
</environmentVariables>
</configuration>
</plugin>
另一種解決方案是在${user.home}/.mavenrc
(或 Windows 上的%HOME%\mavenrc_pre.bat
)中設置MAVEN_OPTS
(或其他環境變量)。
由於 Maven 3.3.1 有新的可能性來設置 mvn 命令行參數,如果這是你真正想要的:
${maven.projectBasedir}/.mvn/maven.config
${maven.projectBasedir}/.mvn/jvm.config
根據@Kevin's answer的文檔,下面的文檔對我有用,用於使用 maven sure-fire 插件設置環境變量
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<environmentVariables>
<WSNSHELL_HOME>conf</WSNSHELL_HOME>
</environmentVariables>
</configuration>
有一個名為properties-maven-plugin 的 maven 插件,它提供了一個目標set-system-properties
來設置系統變量。 如果您有一個包含所有這些屬性的文件,這將特別有用。 因此,您可以讀取屬性文件並將它們設置為系統變量。
在您的代碼中添加:
System.getProperty("WSNSHELL_HOME")
從 maven 命令修改或添加 value 屬性:
mvn clean test -DargLine=-DWSNSHELL_HOME=yourvalue
如果您想在 Eclipse 中運行它,請在您的 Debug/Run 配置中添加 VM 參數
-DWSNSHELL_HOME=你的價值
你不需要修改 POM
您可以通過_JAVA_OPTIONS
變量傳遞一些參數。
例如,為 Maven 代理標志定義一個變量,如下所示:
_JAVA_OPTIONS="-Dhttp.proxyHost=$http_proxy_host -Dhttp.proxyPort=$http_proxy_port -Dhttps.proxyHost=$https_proxy_host -Dhttps.proxyPort=$http_proxy_port"
然后使用mvn clean install
(它會自動選擇_JAVA_OPTIONS
)。
我建議使用神奇的工具direnv 。 使用它,您可以在 cd 進入項目后注入環境變量。 這些步驟對我有用:
.envrc 文件
source_up
dotenv
.env 文件
_JAVA_OPTIONS="-DYourEnvHere=123"
由於有人最終可能會在這里更改他的全局 Java 選項,我想說定義_JAVA_OPTIONS是一個壞主意。 而是定義MAVEN_OPTS環境變量,它仍然會被 Maven 自動拾取,但它不會覆蓋像 _JAVA_OPTS 所做的一切(例如 IDE vm 選項)。
MAVEN_OPTS="-DmyVariable=someValue"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.