Я пытаюсь создать систему, в которой я могу использовать общий файл build.xml в качестве шаблона для подавляющего большинства наших сборников. Я очень близко. В принципе, файл build.xml на уровне приложения должен просто определить несколько вещей (целевую банку, зависимости (как список) и несколько других состояний состояния), а затем импортировать шаблон build.xml.Ant (with ant-contrib) build - path/dependency issue - Ссылка не найдена
Проблема заключается в том, что я пытаюсь использовать зависимости и создавать программный путь classpath. Думаю, я очень близка. Однако, как только путь к классам ссылается на этапе компиляции, он пытается разрешить ссылку, которая, казалось бы, была должным образом подготовлена до того, как произойдет этап компиляции. И это приводит к ошибке BUILD FAILED: Ссылка cpDependency4 не найдена.
Примечание: материал COTS хранится в той же директории, поэтому выполнение этой части работы было тривиальным. Все зависимости от проекта зависят от разных подкаталогов и требуют также вложения в каталог child dependencies /.
Вот пример из элементов, подготовленных в build.xml приложения:
<property name="PROJECT_DEPENDENCIES" value="/path/to/other/dependency1,/path/to/other/dependency2,/path/to/other/dependency3,/path/to/other/dependency4" />
<property name="COTS_DEPENDENCIES" value="commons-io-*.jar,log4j-*.jar,spring-aop-*.RELEASE.jar,spring-beans-*.RELEASE.jar,spring-context-*.RELEASE.jar,spring-core-*.RELEASE.jar,spring-jms-*.RELEASE.jar,spring-oxm-*.RELEASE.jar,spring-web-*.RELEASE.jar"/>
<!-- ... -->
<import file="${DEVELOPMENT_BASE_DIR}/common/ant/antTemplate.xml" />
, а затем файл antTemplate содержит:
<path id="cpDependency0" />
<var name="trackDependencyPath" value="cpDependency0" />
<var name="index" value="0"/>
<for list="${PROJECT_DEPENDENCIES}" param="dependency">
<sequential>
<var name="prior" value="${index}"/>
<math result="index" operand1="${index}" operation="+" operand2="1" datatype="int" />
<property name="var${index}" value="@{dependency}" />
<path id="cpDependency${index}">
<path refid="cpDependency${prior}"/>
<fileset dir="@{dependency}/jar/${env}" includes="*.jar" />
<fileset dir="@{dependency}/jar/${env}/dependencies" includes="*.jar" />
</path>
<var name="trackDependencyPath" value="cpDependency${index}" />
</sequential>
</for>
<path id="classpath.compile">
<fileset dir="${COTS_DIR}/main" includes="${COTS_DEPENDENCIES}" />
<path refid="${trackDependencyPath}" />
</path>
который, кажется, установить все правильно, но .. позже, когда он попадает в цель компиляции:
Я получаю следующую ошибку (на javac линия):
BUILD FAILED
/path/to/common/ant/antTemplate.xml:188: Reference cpDependency4 not found.
Не прямо отвечая на ваш вопрос, но я бы посоветовал расследование использования плюща для управления к классам. Кроме того, ANT libs - очень полезный способ управления общей логикой сборки.Пример ANT lib см .: http://stackoverflow.com/questions/15643191/how-to-manage-a-common-ant-build-script-across-multiple-project-build-jobs-on-je/15647898 # 15647898 –