web-dev-qa-db-ja.com

Antプロパティのファイルの条件付きプロパティ

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

14
BreakPhreak

条件 タスクを使用します:

<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>
28
Mark O'Connor

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

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

これには、ビルドが実行されている場所に応じて、「build-Windows7.properties」または「build-Linux.properties」という名前のファイルが含まれます。もちろん、propertyディレクティブは、ホームディレクトリだけでなく現在のディレクトリも検索します。したがって、プロパティファイルは、ビルドソースの一部、またはビルドアカウントのホームディレクトリにある可能性があります。

条件タグを使用して、プロパティファイルの名前の一部を生成することもできます。

2
M The Developer

使用できる最も単純な条件の形式の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です。

1
Phil

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
1
gyleg5