我正在尝试从ant脚本构建一个ear文件。有几个目标使用不同的项目创建.jar和.war(包含在耳内)文件,这些目标正在构建而没有问题,所以我不会包含它们。
想象一下这个目录结构: -
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...
答案 0 :(得分: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>