我已经将一个项目从Eclipse移植到Maven,并且需要设置一个环境变量以使我的项目正常工作。
在Eclipse中,转到“运行->运行配置”,然后在“环境”选项卡下,将“ WSNSHELL_HOME”设置为值“ conf”。
我如何使用Maven做到这一点?
非常感谢你!
我已经将一个项目从Eclipse移植到Maven,并且需要设置一个环境变量以使我的项目正常工作。
在Eclipse中,转到“运行->运行配置”,然后在“环境”选项卡下,将“ WSNSHELL_HOME”设置为值“ conf”。
我如何使用Maven做到这一点?
非常感谢你!
Answers:
您可以只在命令行中传递它,因为
mvn -DmyVariable=someValue install
[更新]请注意,参数的顺序很重要-您需要在命令之前指定任何选项。[/更新]
在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>
mvn -DWSNSHELL_HOME=conf test
。
System.getenv("WSNSHELL_HOME");
是否正确?
${argLine}
占位符,否则将不会从命令行中提取参数。示例:<argLine>-Duser.timezone=UTC ${argLine}</argLine>
对于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>
有一个名为properties-maven-plugin的maven插件,该插件提供了set-system-properties
设置系统变量的目标。如果您有一个包含所有这些属性的文件,这将特别有用。因此,您可以读取属性文件并将其设置为系统变量。
另一种解决方案是MAVEN_OPTS
在${user.home}/.mavenrc
(或%HOME%\mavenrc_pre.bat
在Windows上)设置(或其他环境变量)。
从Maven 3.3.1开始,如果您真正想要的是设置mvn命令行参数的新可能性:
${maven.projectBasedir}/.mvn/maven.config
${maven.projectBasedir}/.mvn/jvm.config
在您的代码中添加:
System.getProperty("WSNSHELL_HOME")
通过maven命令修改或添加value属性:
mvn clean test -DargLine=-DWSNSHELL_HOME=yourvalue
如果要在Eclipse中运行,请在Debug / Run配置中添加VM参数
-DWSNSHELL_HOME =您的值
您不需要修改POM