【问题标题】:Copy entire directory before creating an ear file在创建 ear 文件之前复制整个目录
【发布时间】:2013-08-12 20:32:38
【问题描述】:

我正在尝试从 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 目标依赖于创建 ear 的默认构建目标 - 如下所示:

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

【问题讨论】:

    标签: ant


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 2013-10-10
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 2017-03-05
      • 2013-07-12
      相关资源
      最近更新 更多