Когда я использую идентификатор ссылки пути, Ant, кажется, оценивает любые переменные внутри определения перед выполнением любых задач. Например, и ${common.lib}
ниже, по-видимому, оцениваются перед выполнением любых задач.Когда указаны ссылки пути Ant?
<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>
Если я скопировать начинку ссылки путь в пути к классам элемента внутри цели компиляции, вещи, кажется, работает хорошо.
Спасибо. Я переместил определения свойств из цели и выше определения пути, и он сработал. – braveterry