0

我正在尝试从 ant 脚本构建一个 ear 文件。有几个目标使用不同的项目创建 .jar 和 .war(包含在 ear 中)文件,这些目标构建没有问题,所以我不会包括它们。

想象一下这个目录结构:-

Project1/
  build/ 
  lib/
  META-INF/
  build.xml

因此,当调用 ant 脚本时,构建目录会被删除并重新制作,所有这些都是相当标准的东西。然后我从外部项目创建 jar 和 war 并将它们存储在 build/ - 一切都很好。

但我也想在 ear 文件中包含目录 lib/ 和 META-INF/。所以我尝试使用这个目标将它们复制到构建目录。

<target name="file_cleanup">
    <copy todir="${build}">
        <fileset dir="lib/"/>
        <fileset dir="META-INF/"/>
    </copy>
</target>

此 file_cleanup 目标依赖于创建耳朵的默认构建目标 - 如下所示:

   <target name="ear" depends="initialise, file_cleanup, other targets...">
        <ear destfile="My.ear" appxml="META-INF/application.xml">
            <fileset dir="${build}" includes="*.jar,*.war"/>
        </ear>
    </target>

拔耳时我想看到的是:

target1.jar
target2.war
lib/
META-INF/

但我实际得到的是:

target1.jar
target2.war
and all of the contents of both the lib and META-INF directories...
4

1 回答 1

2

我能够通过创建其他属性和目录并将目录结构复制到新目录来解决此问题:

<target name="initialise">
    <delete dir="${build}"/>
    <mkdir dir="${build}"/>
    <mkdir dir="${build}/${lib}"/>
    <mkdir dir="${build}/${meta-inf}"/>
</target>


    <target name="file_cleanup">
        <copy todir="${build}/${lib}">
            <fileset dir="lib"/>
        </copy>
        <copy todir="${build}/${meta-inf}">
            <fileset dir="META-INF"/>
        </copy>
    </target>
于 2013-08-12T12:32:38.457 回答