Как превратить каталоги в файлы .jar с помощью Ant - PullRequest
1 голос
/ 12 октября 2009

Как превратить список каталогов в список файлов .jar? Кажется, что использование Copy Task и Mappers является правильным способом сделать это, но я не нашел ни одного вложенного элемента, создающего файл jar из каталога.

Конечно, список каталогов будет вычисляться и не будет жестко закодирован в скрипте ant.

Например, каталог foo содержит каталоги bar1, bar2 и bar3. Сценарий создаст bar1.jar из каталога bar1, bar2.jar из каталога bar2 и bar3.jar из каталога bar3 Сценарий создаст bar4.jar из недавно добавленного каталога bar4 без каких-либо изменений в сценарии (без жесткого списка).

Спасибо за вашу помощь

Ответы [ 2 ]

2 голосов
/ 21 октября 2009

Вы можете использовать задачу 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>
0 голосов
/ 12 октября 2009

Вы можете использовать соответствующую Jar задачу вместе с foreach расширением ant-contrib.

Образец:

<foreach list="${hmProjectsList}" delimiter="/," 
         target="cvsCheckOut" param="hmProjectDir" inheritall="true" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...