如何使用Ant将目录转换为.jar文件

如何使用Ant将目录转换为.jar文件,ant,jar,Ant,Jar,如何将目录列表转换为.jar文件列表? 似乎使用复制任务和映射器是正确的方法,但我没有发现任何嵌套元素从目录创建jar文件 当然,目录列表是计算出来的,而不是在ant脚本中硬编码 例如,一个foo目录包含bar1、bar2和bar3目录。该脚本将从bar1 dir创建bar1.jar,从bar2 dir创建bar2.jar,从bar3 dir创建bar3.jar 该脚本将从新添加的bar4目录创建一个bar4.jar,而不会对脚本进行任何更改(没有硬编码列表) 感谢您的帮助您可以使用适当的,以及

如何将目录列表转换为.jar文件列表? 似乎使用复制任务和映射器是正确的方法,但我没有发现任何嵌套元素从目录创建jar文件

当然,目录列表是计算出来的,而不是在ant脚本中硬编码

例如,一个foo目录包含bar1、bar2和bar3目录。该脚本将从bar1 dir创建bar1.jar,从bar2 dir创建bar2.jar,从bar3 dir创建bar3.jar 该脚本将从新添加的bar4目录创建一个bar4.jar,而不会对脚本进行任何更改(没有硬编码列表)


感谢您的帮助

您可以使用适当的,以及ant contrib扩展任务

样本:

<foreach list="${hmProjectsList}" delimiter="/," 
         target="cvsCheckOut" param="hmProjectDir" inheritall="true" />

您可以使用该任务来执行此操作。例如:

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


Jar在输入文件和单个输出文件中接受多个文件。我需要多个输出文件。如果你知道如何做到这一点,你能举个例子吗?AFAIK jar任务可以将basedir作为输入,并将其转换为目标文件-这似乎是你所需要的。实际上,我想要这样的东西:无论“mydir”中包含的目录是什么,它们都是JARD。n个目录生成n.jar文件。