创建EAR文件之前复制整个目录(Copy entire directory before creat

2019-10-29 20:30发布

我试图建立从Ant脚本EAR文件。 有迹象表明,创建的.jar和.war(被包含在耳内)使用不同的项目,这些都是没有问题建设,所以我将不包括他们的文件数个目标。

想象一下这样的目录结构: -

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

因此,当ant脚本被称为构建目录被删除重拍,都是相当标准的东西。 然后,我罐子里的和战争的外部项目的创建,并将它们存储在建/ - 一切都很好。

但我也想包括目录lib /和META-INF / EAR文件。 所以,我尝试将它们复制到使用此目标构建目录。

<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...

Answer 1:

我能够通过创建额外的属性和目录,并复制目录结构到新目录来解决这个问题:

<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>


文章来源: Copy entire directory before creating an ear file
标签: ant