2012-07-17 16 views
3

是否可以在maven3中設置默認屬性。我可以通過以下在maven3中設置默認屬性。可能?

<properties> 
    <cargo.tomcat.home>${env.CATALINA_HOME}</cargo.tomcat.home> 
</properties> 

獲取從猛砸CATALINA_HOME但是,如果變量沒有設置,我運行計算表達式命令我得到空對象

! MVN org.apache.maven.plugins:Maven的幫助 - 插件:2.1.1:評估-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。我不介意使用另一個插件,但香草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 

回答

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和被設置爲default_FOO

相關問題