パス参照 ID を使用すると、タスクが実行される前に、Ant は定義内の変数を評価するようです。たとえば、${common.dist}
以下${common.lib}
は、タスクが実行される前に評価されるようです。
<path id="compile.classpath">
<fileset dir="lib">
<include name="*.jar" />
</fileset>
<fileset dir="${common.dist}">
<include name="*.jar" />
</fileset>
<fileset dir="${common.lib}">
<include name="*.jar" />
</fileset>
</path>
Ant の出力には、次のようなものが表示されます。
Adding reference: compile.classpath
Property "common.dist" has not been set
Property "common.lib" has not been set
...
Build sequence for target(s) `package' is [...]
Complete build sequence is [...]
これにより、ターゲットが実行される前にパス参照が処理されているように見えます。
次のようなコンパイルターゲットがあります。
<target name="compile" depends="init,common">
<javac destdir="build/classes" debug="true" deprecation="true" optimize="true">
<src path="src/java" />
<classpath>
<path refid="compile.classpath" />
</classpath>
</javac>
</target>
パス参照の内容をコンパイル ターゲット内のクラスパス要素にコピーすると、問題なく動作するように見えます。