我不是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
時,你只需要刪除那個目錄。
我希望這能回答你的問題。