2012-11-25 16 views
11

Ant プロパティファイルbuild.xmlではなく)のプロパティ値を条件付きで設定することはできますか?たとえば、apache.rootプロパティが設定されている場合、my_property${apache.root}/myapp、そうでない場合は/var/www/myappになります。そうでない場合、再使用可能なbuild.xmlファイルが一般的な慣行となりますか?Antプロパティのファイルの条件付きプロパティ

<project name="demo" default="run"> 

    <condition property="my_property" value="${apache.root}/myapp" else="/var/www/myapp"> 
     <isset property="apache.root"/> 
    </condition> 

    <target name="run"> 
     <echo message="my_property=${my_property}"/> 
    </target> 

</project> 

答えて

24

conditionタスクを使用します。例

<echo>Building ${ant.project.name} on OS: ${os.name}-${os.arch}</echo> 
<property file="build-${os.name}.properties" /> 

にとって、これはやビルドが実行されている場所に応じて「build-Linux.properties」「7.properties-のWindowsを構築する」という名前のファイルが含まれます。もちろん、プロパティー・ディレクティブは現在のディレクトリーとホーム・ディレクトリーを探します。したがって、プロパティファイルは、ビルドソースの一部でも、ビルドアカウントのホームディレクトリでもかまいません。

あなたが使用できる状態の最も単純な形式の

+0

ありがとうございました。しかし、私は 'build.xml'ではなく、' property'ファイルについて尋ねていました。あるいは、もし私があなたに正しいことを与えてくれれば、それを実現させる唯一の方法は「条件」ですか? – BreakPhreak

+0

ビルドxmlのプロパティファイルを読むことができ、後で関連するプロパティに基づいて新しいプロパティを定義できます... – Vishal

+0

いくつかの 'build.xmlで読み込まれる"ちょっと "の再利用可能なプロパティファイル(条件付き) 'ファイル。間違った方向を目指していますか? – BreakPhreak

1

あなたは環境や条件変数に基づいて、異なるプロパティファイルを含めることができます。

1

一つを選択するだけでなく、プロパティファイルの名前の一部を生成するための条件タグを使用することができます:

<exec executable="hostname" outputproperty="hostname"/> 
<condition property="python" value="/usr/bin/python3.4"> 
    <equals arg1="${hostname}" arg2="host0"/> 
</condition> 
<property name="python" value="/usr/bin/python"/> 

異なる対応するために、 Pythonのインストールパスなどです。ここで、デフォルトのインストールパスは/ usr/bin/pythonです。host0以外は/usr/bin/python3.4

0

OPはantビルドファイルではなくプロパティファイルについて質問していました。残念ながら、条件ファイルはプロパティファイル内では実行できません。あなたができることは、依存するプロパティのセットごとに別々のプロパティファイルを用意することです。例えば:

のbuild.xml

<condition property="app.name" value="appA"> 
    <equals arg1="${appName}" arg2="A" /> 
</condition> 
<condition property="app.name" value="appB"> 
    <equals arg1="${appName}" arg2="B" /> 
</condition> 
<property file="${app.name}.properties" /> 
<!-- since properties are immutable, set your defaults here --> 
<property name="apache.root" value="/var" /> 
<property file="restOfProps.properties" /> 

appA.properties

apache.root=/appA 

restOfProps.properties

my_property=${apache.root}/myapp 
関連する問題