使用ant创建ear-File

时间:2011-04-28 15:45:37

标签: ant ear

我是蚂蚁的新手,我引用了很多网站,我需要为我的项目构建build.xml 两个模块我有application.xml文件,代表相应的war文件

所以我的问题是添加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文件或者我需要编译整个场景请告诉我。怎么解决这个问题。

1 个答案:

答案 0 :(得分:3)

我不是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目标未被packagecompile调用。您必须手动调用它。

我建议的唯一其他方法是尽量保持工作区域清洁。您创建的任何文件都应放在${target.dir}目录中。这样,当您执行clean时,您只需删除该目录。

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