У нас есть несколько скриптов Ant, по одному для каждого нашего подпроекта. В конце мы хотим запустить все это из основного сценария сборки и выполнить некоторую другую уборку, чтобы упаковать весь проект. Каждый из отдельных скриптов Ant называется ant.xml
и находится в подкаталоге своего проекта. Каждый использует Ant import
для импорта ant-commons.xml
, а затем переопределяет некоторые из конкретных целей там.
Например, один из проектов переопределяет цель compile
, чтобы соответствующим образом установить classpath
и установить source
и target
на 1,5 (для ant-commons используется 1.4)
Теперь в теории все это звучит просто. Вот основной скрипт сборки:
<project name="Retain" basedir="." default="main">
<target name="main">
<ant dir="SharedJava" antfile="ant.xml" target="clean"/>
<ant dir="SharedJava" antfile="ant.xml" target="copy_current"/>
<ant dir="GWEasySoap" antfile="ant.xml" target="clean"/>
<ant dir="GWEasySoap" antfile="ant.xml" target="copy_current"/>
<ant dir="RetainLib" antfile="ant.xml" target="clean"/>
<ant dir="RetainLib" antfile="ant.xml" inheritAll="false" target="copy_current"/>
<ant dir="RetainIndex" antfile="ant.xml" target="clean"/>
<ant dir="RetainIndex" antfile="ant.xml" target="copy_current"/>
<ant dir="RetainPersist" antfile="ant.xml" target="clean"/>
<ant dir="RetainPersist" antfile="ant.xml" target="copy_current"/>
</target>
</project>
Что на самом деле происходит:
Первые несколько подпроектов работают нормально. RetainLib
, который, на самом деле, должен иметь ссылку на банку SharedJava
, затем терпит неудачу, жалуясь о том, что он не может его найти. Когда я удалил RetainLib
, RetainIndex
потерпел неудачу, жалуясь на то, что вы не должны использовать дженерики в целевом файле 1.4.
После игры я решил, что они настаивают на запуске цели компиляции внутри ant-commons
вместо переопределенной.
Почему? Как я могу обойти это? (Изящно, я имею в виду - очевидно, я мог бы полностью отказаться от использования муравьиного обыкновенного, и держу пари, что все будет работать.)