2009-06-01 9 views
50

私のビルドスクリプトは、リリースおよび開発環境で適切に動作するようにしたいと思います。このためデフォルト値の環境からantプロパティを定義

私はアリでプロパティを定義したいと思い、(例えば)それを呼び出すfileTargetName

fileTargetNameそれが利用できる場合には、環境変数RELEASE_VERから値だでしょう、それが利用できない場合は、デフォルトを取得しますDEVの値はアリ<condition><value></condition> & <property>

ヘルプ、それは働いて得るためには理解されよう。

答えて

71

プロパティに環境変数を取得する方法のAnt documentationから例:お使いの場合には

<property environment="env"/> 
<echo message="Number of Processors = ${env.NUMBER_OF_PROCESSORS}"/> 
<echo message="ANT_HOME is set to = ${env.ANT_HOME}"/> 

、あなたは${env.RELEASE_VER}を使用します。

 
Attribute Description            Required 
property The name of the property to set.      Yes 
value  The value to set the property to. Defaults to "true". No 
else  The value to set the property to if the condition  No 
      evaluates to false. By default the property will 
      remain unset. Since Ant 1.6.3 

がそれを一緒に置く:

そして、条件部分のために、ドキュメントhereは、次の3つの属性があることを述べている

<property environment="env"/> 
<condition property="fileTargetName" value="${env.RELEASE_VER}" else="dev"> 
    <isset property="env.RELEASE_VER" /> 
</condition> 
+2

昨日私はこの質問に答えることができませんでしたが、SOは私に研究を余儀なくされました。 StackOverflowのための万歳! –

+1

ありがとうございます! antの奇妙な動作:環境パラメータが設定されていない場合、$ {env.ANT_HOME}にエコーを行うと "$ {env.ANT_HOME}"と表示されます。デフォルトのant呼び出しはそれを設定しません(少なくともこのマシンでは:RH WS 5、bash) –

0

私はこれよりも簡単な方法があると確信しています、しかし、方法について:

<project name="example" default="show-props"> 

    <property environment="env" /> 

    <condition property="fileTargetName" value="${env.RELEASE_VER}"> 
     <isset property="env.RELEASE_VER" /> 
    </condition> 

    <condition property="fileTargetName" value="dev"> 
     <not> 
      <isset property="env.RELEASE_VER" /> 
     </not> 
    </condition> 

    <target name="show-props"> 
     <echo>property is ${fileTargetName}</echo> 
    </target> 

</project> 
+0

条件のelse属性についてはわかりませんでした - @ mmyers FTW – toolkit

+0

マニュアルですべてを見る必要があると思います。 :) –

38

を使用する必要はありませんこれはです。 RELEASE_VER環境変数が設定されている場合、プロパティは環境からその値を取得し、第二<property>文は効果がありません

<property environment="env"/> 
<property name="env.RELEASE_VER" value="dev"/> 

:あなたはちょうどこれを使用することができますので、Antの中のプロパティは、immutableです。そうでない場合、プロパティは最初のステートメントの後で設定解除され、2番目のステートメントはその値を"dev"に設定します。

+0

全く同じ効果はありませんが、別の名前を付けたい場合は別のを追加するといいでしょうか? –

+0

もちろん、のような3行目を追加することもできます。 –

+0

ありがとうございます、それは問題の素晴らしいひねりです。読みやすさの理由から私はその状態に固執するでしょう。 –

関連する問題