Ant プロパティファイル(build.xml
ではなく)に条件付きでプロパティ値を設定することは可能ですか?たとえば、Apache.root
プロパティが設定されている場合-my_property
は${Apache.root}/myapp
になり、それ以外の場合は/var/www/myapp
になります。そうでない場合、一般的な方法は何でしょうか-再利用可能なbuild.xml
ファイル?
条件 タスクを使用します:
<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>
環境または条件変数に基づいて、さまざまなプロパティファイルを含めることができます。例えば
<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ディレクティブは、ホームディレクトリだけでなく現在のディレクトリも検索します。したがって、プロパティファイルは、ビルドソースの一部、またはビルドアカウントのホームディレクトリにある可能性があります。
条件タグを使用して、プロパティファイルの名前の一部を生成することもできます。
使用できる最も単純な条件の形式の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です。
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