Gia*_*uca 74 java environment-variables maven
我已经将一个项目从Eclipse移植到Maven,我需要设置一个环境变量来使我的项目工作.
在Eclipse中,我转到"运行 - >运行配置",在"环境"选项卡下,我将"WSNSHELL_HOME"设置为值"conf".
我怎么能用Maven做到这一点?
非常感谢你!
Pét*_*rök 110
您可以在命令行上传递它,如
mvn -DmyVariable=someValue install
Run Code Online (Sandbox Code Playgroud)
[更新]请注意,参数的顺序很重要 - 您需要在命令之前指定任何选项.[/更新]
在POM文件中,您可以引用系统变量(在命令行或在pom中指定)${myVariable}和环境变量${env.myVariable}.(感谢评论的评论者.)
好的,所以你想把你的系统变量传递给你的测试.如果 - 正如我所假设的 - 你使用Surefire插件进行测试,最好的是在你的plugins部分中指定pom中所需的系统变量,例如
<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>
Run Code Online (Sandbox Code Playgroud)
FrV*_*aBe 23
这些-D属性不会可靠地从万无一失的传播到你的测试(我不知道为什么它适用于eclipse).在命令行上使用maven时,使用argLine属性来包装您的属性.这会将它们传递给您进行测试
mvn -DargLine="-DWSNSHELL_HOME=conf" test
Run Code Online (Sandbox Code Playgroud)
使用System.getProperty读取你的代码的值.看看到这个职位有关的差异System.getenv和Sytem.getProperty.
小智 8
对于 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>
Run Code Online (Sandbox Code Playgroud)
另一种解决方案是在(或在 Windows 上)设置MAVEN_OPTS(或其他环境变量) 。${user.home}/.mavenrc%HOME%\\mavenrc_pre.bat
从 Maven 3.3.1 开始,有新的可能性来设置 mvn 命令行参数,如果这是你真正想要的:
\n\n${maven.projectBasedir}/.mvn/maven.config${maven.projectBasedir}/.mvn/jvm.config您可以将maven命令包装在bash脚本中:
#!/bin/bash
export YOUR_VAR=thevalue
mvn test
unset YOUR_VAR
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
159996 次 |
| 最近记录: |