我不是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知道它必须只重新编译一个文件。它也知道它可能不得不重建包含该类文件的jar文件。然后,它知道它必须重建耳朵。大多数任务都可以自行解决,并且每个构建都不会执行clean
。 (您注意clean
目标未被package
或compile
调用,您必须手动调用它)。
我建议的唯一的其他事情是,您尝试保持工作区域清洁。您创建的任何文件都应放入${target.dir}
目录。这样,当你做一个clean
时,你只需要删除那个目录。
我希望这能回答你的问题。