【问题标题】:Creating an ear-File with ant用 ant 创建一个 ear-File
【发布时间】:2011-04-29 11:00:05
【问题描述】:

我是 ant 新手,我推荐了很多网站,我需要为我的项目构建.xml,其中包括 在两个模块中,我有 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>

这是否会引用相应的战争文件,或者我需要编译整个场景,请告诉我。如何解决。

【问题讨论】:

    标签: ant ear


    【解决方案1】:

    我不是 100% 确定你在问什么。

    要使用&lt;ear&gt; 任务,您已经需要编译所需的jars 和wars。

    如果这些 jars 和 war 已经构建,您只需在您的 &lt;ear&gt; 任务中引用它们,就像您在示例中所做的那样。 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 知道它只需要重新编译那个文件。它还知道它可能必须重建包含该类文件的 jarfile。然后,它知道它必须重建耳朵。大多数任务都可以自己解决,并且您不会为每个构建都执行clean。 (您注意到clean 目标不是由packagecompile 调用的。您必须手动调用它。

    我唯一建议的另一件事是尽量保持工作区域清洁。您创建的任何文件都应放入${target.dir} 目录。这样,当您执行clean 时,您只需删除那个目录即可。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-29
      • 1970-01-01
      • 2019-12-24
      相关资源
      最近更新 更多