2011-04-28 108 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时,你只需要删除那个目录。

我希望这能回答你的问题。