これを解決する方法はいくつかあるかもしれませんが、ant-contrib 要素を使用するほど簡単なものはありません。これでアプリケーションに必要なものが得られるかどうかはわかりませんが、次のことを試すことができます。
条件付きターゲットの使用。マクロ定義を呼び出すターゲットに置き換えることができれば、これでうまくいくかもしれません。これによりプロパティがグローバルに設定されるため、アプリケーションでは機能しない可能性があることに注意してください。
<target name="default">
<condition property="platformIsProd">
<equals arg1="${platform}" arg2="prod" />
</condition>
<antcall target="do-buildstamp" />
</target>
<target name="do-buildstamp" if="platformIsProd">
<echo>doing prod stuff...</echo>
</target>
「else」ケースを処理します。 別のケースを処理する必要がある場合は、いくつかのターゲットを指定する必要があります...
<target name="default">
<property name="platform" value="prod" />
<antcall target="do-buildstamp" />
</target>
<target name="do-buildstamp">
<condition property="platformIsProd">
<equals arg1="${platform}" arg2="prod" />
</condition>
<antcall target="do-buildstamp-prod" />
<antcall target="do-buildstamp-other" />
</target>
<target name="do-buildstamp-prod" if="platformIsProd">
<echo>doing internal prod stuff...</echo>
</target>
<target name="do-buildstamp-other" unless="platformIsProd">
<echo>doing internal non-prod stuff...</echo>
</target>
外部ビルド ファイルの使用。プロパティに対して異なる値で複数の呼び出しを行う必要がある場合は、同じプロジェクト内の別のビルド ファイルでこれを分離できます。これによりパフォーマンスが少し低下しますが、追加のライブラリは必要ありません。
build.xml で:
<target name="default">
<ant antfile="buildstamp.xml" target="do-buildstamp" />
<ant antfile="buildstamp.xml" target="do-buildstamp">
<property name="platform" value="prod" />
</ant>
<ant antfile="buildstamp.xml" target="do-buildstamp">
<property name="platform" value="nonprod" />
</ant>
</target>
buildstamp.xml で:
<condition property="platformIsProd">
<equals arg1="${platform}" arg2="prod" />
</condition>
<target name="do-buildstamp">
<antcall target="do-buildstamp-prod" />
<antcall target="do-buildstamp-other" />
</target>
<target name="do-buildstamp-prod" if="platformIsProd">
<echo>doing external prod stuff...</echo>
</target>
<target name="do-buildstamp-other" unless="platformIsProd">
<echo>doing external non-prod stuff...</echo>
</target>
プロジェクトに ant-contrib を追加します。もちろん、プロジェクトにファイルを追加できる場合、最も簡単なのは ant-contrib.jar ファイルを追加することです。「tools」フォルダーの下に置き、タスク定義を使用してプルすることができます。
<taskdef resource="net/sf/antcontrib/antlib.xml" classpath="${basedir}/tools/ant-contrib.jar" />