Maven的环境variables
我已经从Eclipse的项目移植到Maven,我需要设置一个环境variables,使我的项目工作。
在Eclipse中,我进入“运行 – >运行configuration”,在“environment”选项卡下,我将“WSNSHELL_HOME”设置为“conf”。
我怎么能用Maven做到这一点?
非常感谢你!
你可以直接在命令行上传递它
mvn -DmyVariable=someValue install
[更新]请注意,参数的顺序非常重要 – 您需要在命令之前指定任何选项。 [/更新]
在POM文件中,可以将系统variables(在命令行或pom中指定)称为${myVariable}
,将环境variables称为${env.myVariable}
。 (感谢评论者的更正。)
UPDATE2
好的,所以你想把你的系统variables传递给你的testing。 如果我假设你使用Surefire插件进行testing,那么最好是在你的plugins
部分指定所需的系统variables,例如
<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>
-D
属性将不可靠地从surefire-pluging传播到你的testing中(我不知道为什么它和eclipse一起工作)。 在命令行中使用maven时,使用argLine属性来包装您的属性。 这将通过他们到你的testing
mvn -DargLine="-DWSNSHELL_HOME=conf" test
使用System.getProperty
来读取代码中的值。 看看这篇文章关于System.getenv
和Sytem.getProperty
。
有一个名为properties-maven-plugin的maven插件,这个插件提供了一个目标set-system-properties
来设置系统variables。 如果你有一个包含所有这些属性的文件,这是特别有用的。 所以你可以读取一个属性文件并将它们设置为系统variables。
另一个解决scheme是在${user.home}/.mavenrc
(或windows上的%HOME%\mavenrc_pre.bat
)中设置MAVEN_OPTS
(或其他环境variables)。
由于Maven 3.3.1有新的可能性来设置mvn命令行参数 ,如果这是你真正想要的:
-
${maven.projectBasedir}/.mvn/maven.config
-
${maven.projectBasedir}/.mvn/jvm.config