Я не на 100% уверен, что вы спрашиваете.
Чтобы использовать задачу <ear>
, вам уже нужно скомпилировать необходимые банки и войны.
Если эти банки и войны уже построены, вы просто обращаетесь к ним вваша <ear>
задача, как вы делали в своем примере.application.xml
должно уже существовать до того, как вы построите свое ухо.application.xml
не строит банки и войны, вы должны это сделать.
Если вы еще не построили войны и банки, вам нужно сделать это в первую очередь.Общая схема build.xml
выглядит примерно так:
<project name="foo" basedir="." default="package">
<!-- Some standard properties you've defined -->
<property name="target.dir" value="${basedir}/target"/>
<property name="xxx" value="yyy"/>
<property name="xxx" value="yyy"/>
<property name="xxx" value="yyy"/>
<!-- Compile properties that allow overrides -->
<property name="javac.nowarn" value="false"/>
<property name="javac.listfiles" value="false"/>
<property name="javac.srcdir" value="source"/>
<property name="javac.distdir" value="${target.dir}/classes"/>
<target name="clean"
description="cleans everything nice and shiny">
<delete dir="${target.dir}"/>
</target>
<target name="compile"
description="Compiles everything">
<mkdir dir="${javac.distdir}"/>
<javac srcdir="${javac.srcdir}"
destdir="${javac.destdir}"
[...]
[...]/>
</target>
<target name="package.jar"
depends="compile"
description="Package jarfile">
<jar destfile="${target.dir}/jarname.jar"
[...]
[...]/>
</target>
<target name="package.jar2"
depends="compile"
description="Package jarfile">
<jar destfile="${target.dir}/jarname2.jar"
[...]
[...]/>
</target>
<target name="package.war"
depends="compile"
description="Package jarfile">
<war destfile="${target.dir}/jarname.jar"
[...]
[...]/>
</target>
<target name="package"
depends="package.jar"
description="Make the ear">
<ear destfile="${target.dir}/earfile.ear"
[...]/>
</target>
</project>
По сути, она состоит из набора целей , и каждая цель выполняет одну задачу.Вы можете иметь цели в зависимости от других целей.Например, этот конкретный build.xml
автоматически запустит задачу package
.Задача пакета зависит от задачи package.jar
, которая зависит от задачи compile
.Таким образом, файл build.xml
сначала вызовет compile
, затем package.jar
, затем package
.
. Важно помнить, что вы не указываете порядок событий.Вы позволяете Ant понять это, и вы позволяете Ant выяснить, что вам нужно делать.Допустим, вы изменили исходный файл Java.Ant знает, что он должен перекомпилировать только один файл.Он также знает, что может потребоваться перестроить jarfile, содержащий этот файл классов.И тогда он знает, что должен восстановить слух.Большинство задач могут понять это самостоятельно, и вы не делаете clean
для каждой сборки.(Вы замечаете, что цель clean
не вызывается package
или compile
. Вы должны вызывать ее вручную).
Единственное, что я рекомендую, - это попытаться сохранить свою работуПлощадь чистая.Любые файлы, которые вы создаете, должны быть помещены в каталог ${target.dir}
.Таким образом, когда вы делаете clean
, вам нужно только удалить этот каталог.
Надеюсь, это ответит на ваш вопрос.