如何将目录列表转换为.jar文件列表? 似乎使用Copy Task和Mappers是正确的方法,但我没有找到任何嵌套元素从目录创建jar文件。
当然,目录列表将被计算,而不是在ant脚本中进行硬编码。
例如,foo目录包含bar1,bar2和bar3目录。该脚本将从bar1目录创建bar1.jar,从bar2目录创建bar2.jar,从bar3目录创建bar3.jar 该脚本将从新添加的bar4目录创建一个bar4.jar,而不会对脚本进行任何更改(没有硬编码列表)。
先谢谢你的帮助
答案 0 :(得分:2)
您可以使用subant任务执行此操作。例如:
<project name="jars" default="jar" basedir=".">
<property name="dir.build" value="${basedir}/build"/>
<property name="dir.root" value="${basedir}/foo"/>
<target name="init">
<tstamp/>
<mkdir dir="${dir.build}"/>
</target>
<target name="jar" depends="init">
<!-- ${ant.file} is the name of the current build file -->
<subant genericantfile="${ant.file}" target="do-jar">
<!-- Pass the needed properties to the subant call. You could also use
the inheritall attribute on the subant element above to pass all
properties. -->
<propertyset>
<propertyref name="dir.build"/>
</propertyset>
<!-- subant will call the "do-jar" target for every directory in the
${dir.root} directory, making the subdirectory the basedir. -->
<dirset dir="${dir.root}" includes="*"/>
</subant>
</target>
<target name="do-jar">
<!-- Get the basename of the basedir (bar1, bar2, etc.) -->
<basename file="${basedir}" property="jarname"/>
<jar jarfile="${dir.build}/${jarname}.jar" basedir="${basedir}"/>
</target>
</project>
答案 1 :(得分:0)