如何使用ant build.xml为多模块应用程序创建EAR文件?

时间:2018-11-14 13:28:20

标签: ant ear build.xml building

我需要使用ant build工具来构建多模块应用程序,但找不到合适的文档。我对此毫不怀疑。

实际上,我们的应用程序由7个模块组成,其中1个是EAR模块(当前,我们正在通过eclipse进行构建,而未使用任何构建工具)。

所以我的疑问是

  1. 我可以在EAR模块(EAR项目)中编写单个build.xml来构建项目,还是需要为每个模块编写build.xml?

  2. ,而且我们的项目还具有循环依赖关系,因此可以在不解决那些循环依赖关系的情况下使用Ant进行构建吗?...

    预先感谢

1 个答案:

答案 0 :(得分:1)

  1. 所有模块都应该有单独的build.xml。您耳朵模块的build.xml应该调用其他所有模块的build文件,并最终通过看起来像ear的任务导出耳朵;

    <property name="build.dir" value="/path/to/your/build-directory/" />
    <property name="src.dir" value="/path/to/ear-module/" />
    
    <target name="generate-module-jars">
        <!-- this should build module and export module jar to ${build.dir} -->
        <ant antfile="module1/build.xml" target="jar" />
        <!-- this should build module and export module jar to ${build.dir} -->
        <ant antfile="module2/build.xml" target="jar" />
        <!-- this should build module and export module jar to ${build.dir} -->
        <ant antfile="module3/build.xml" target="jar" />
    </target>
    
    <target name="export-ear" depends="generate-module-jars">
        <ear destfile="${build.dir}/myapp.ear" appxml="${src.dir}/metadata/application.xml">
            <fileset dir="${build.dir}" includes="*.jar,*.war"/>
        </ear>
    </target>
    

  2. 您应该重新组织模块,以消除循环依赖性。但是您仍然可以使用ivy。或者,您可以自行实现一个ant任务,直接调用可以处理循环依赖关系的eclipse编译器。 (如果您使用的是eclipse)