4

maven3でデフォルトのプロパティを設定することは可能ですか. 次のようにして、bash から CATALINA_HOME を取得できます。

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

しかし、変数が設定されておらず、式の評価コマンドを実行すると、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 を設定することに興味があります。別のプラグインを使用してもかまいませんが、バニラ 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

1 に答える 1

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 の他の場所で使用され、実際の値に置き換えられます。値を指定するには、次の 3 つの方法があります。

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

于 2012-07-19T10:28:07.087 に答える