2011-04-28 104 views
0

我是新來的螞蟻我提到許多網站,我需要到build.xml爲我的項目由兩個的 模塊我有一個代表相應的war文件application.xml文件創建耳文件與螞蟻

所以我的問題是,它足以添加application.xml文件

<ear destfile="${dist.dir}/${ant.project.name}.ear" appxml="${conf.dir}/application.xml"> 
<metainf dir="${build.dir}/META-INF"/> 
<fileset dir="${dist.dir}" includes="*.jar,*.war"/> 
</ear> 

這是否會參照相應的WAR文件或我需要編譯整個方案,請讓我知道。如何解決此問題。

回答

2

我不是100%確定你在問什麼。

爲了使用<ear>任務,您已經需要編譯所需的罐子和戰爭。

如果這些罐子和戰爭已經建成,你只需在你的<ear>任務中引用它們就像你在例子中所做的那樣。在建立你的耳朵之前,必須已經存在application.xmlapplication.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目標未被packagecompile調用,您必須手動調用它)。

我建議的唯一的其他事情是,您嘗試保持工作區域清潔。您創建的任何文件都應放入${target.dir}目錄。這樣,當你做一個clean時,你只需要刪除那個目錄。

我希望這能回答你的問題。