私は混乱しているビルドを持っています。最終的に、ターゲットは最大 15 回実行されます。ほとんどのターゲットは、12 回以上実行されます。build.xmlこれは、ビルドとターゲットが 10 個の個別のビルド ファイル ( 、build-base.xml、compile.xmlなど)に分割されているためです。
多くのビルド ファイルでは、最初 <property>にビルド ファイル内のすべてのターゲットの外側にタスクがあります。これらは通常、ターゲットが呼び出される前に最初に実行されます。
これが私のbuild.xmlファイルです:
<import file="build-base.xml"/>
[...]
<target name="compile-base">
<antcall target="setup-tmpj"/>
<ant antfile="compile.xml" target="compile-base"/>
[...]
</target>
compile.xmlファイルは次のとおりです。
<import file="build-base.xml"/>
<property name="target" value="1.5"/>
<available file="target/gensrc/com" property=gensrc.exists"/>
[...]
<target name="buildAndCompileCodeGen" unless=gensrc.exists">
<blah blah blah/>
</target>
<target name="compile-base" depends="buildAndCompileCodeGen">
<blah blah blah/>
</target>
私はこれを実行します:
$ ant -f build.xml compile-base
compile-baseこれにより、ファイル内のターゲットが呼び出されcompile.xmlます。buildAndCompileCodeGenこれは、ファイル内のターゲットに依存しcompile.xmlます。ただし、ターゲットは、プロパティが設定buildAndCompileCodeGenされていない場合にのみ実行されます。gensrc.exists
compile.xmlファイルにはプロパティ<available>を設定するタスクがありgensrc.existsますが、このタスクは のすべてのターゲットの外側にありますcompile.xml。その<available>タスクはこれまでに呼び出されたので、gensrc.exist設定されていますか?