是否可以在maven3中设置默认属性。我可以通过以下
从bash中获取CATALINA_HOME <properties>
<cargo.tomcat.home>${env.CATALINA_HOME}</cargo.tomcat.home>
</properties>
但是如果没有设置变量,我运行evaluate expression命令,我得到null对象
! mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression = cargo.tomcat.home
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-help-plugin:2.1.1:evaluate (default-cli) @ cargo-selenium-springmvc-webapp ---
[INFO] No artifact parameter specified, using 'com.keybroker.spike:cargo-selenium-springmvc-webapp:war:1.0-SNAPSHOT' as project.
[INFO]
null object or invalid expression
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.721s
[INFO] Finished at: Tue Jul 17 16:51:48 CEST 2012
[INFO] Final Memory: 5M/81M
[INFO] ------------------------------------------------------------------------
我有兴趣设置默认的$ CATALINA_HOME。我不介意使用另一个插件,但vanilla maven3最好。所以我在寻找
if $CATALINA_HOME is set by bash then use it
otherwise if the is a -DcatalinaHome argument passed to maven, then use that
if all else fails, default to XYZ path for $CATALINA_HOME
答案 0 :(得分:4)
是的,这是可能的。我在Windows 7和Maven 3.0.4上测试了这个。 FOO
是我的示例环境变量。
首先,将以下配置文件添加到POM
<profiles>
<profile>
<id>env.FOO</id>
<activation>
<property>
<name>!env.FOO</name>
</property>
</activation>
<properties>
<env.FOO>default_FOO</env.FOO>
</properties>
</profile>
</profiles>
如您所知,占位符${env.FOO}
在POM的其他位置使用,将替换为实际值。提供价值的三种方式是:
1)通过设置环境变量
set FOO=env_FOO (Windows)
export FOO=env_FOO (Bash)
2)提供命令行参数(这将覆盖环境变量)
mvn -Denv.FOO=cmdline_FOO (note the env. prefix)
将覆盖环境值。
3)未通过任何先前方法设置FOO
,POM中的值将被!env.FOO
激活子句并设置为{{1 }}