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.getenvSytem.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