私は混乱しているビルドを持っています。最終的に、ターゲットは最大 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
設定されていますか?