Как «динамически» сгенерировать набор файлов? - PullRequest
1 голос
/ 09 марта 2009

Как динамически генерировать набор файлов на основе пользовательского ввода?

С учетом этих каталогов:

root
--dir1
----filesA.txt
----subdir1_1
--dir2
----filesB.xml
--dir3
----filesC.java
----subdir3_1
--dir4
----filesD.txt
----subdir4_1
------subdir4_1_1

и вызов из командной строки:

ant -Ddirectory="dir1 dir3"

<target name="zip">
  <zip destfile="${root}/archive.zip">
    <fileset dir="${root}">
      <include name="**/*"/>
    </fileset>
  </zip>
</target>

Я хочу заархивировать только каталог (и его подфайлы), указанный пользователем. Я подумал об использовании задач PropertyRegex, но подумал, что это ужасный способ сделать это.

1 Ответ

2 голосов
/ 09 марта 2009

Использовать foreach от antcontrib foreach :

ant -Ddirectory="dir1,dir3"

<project name="build" default="zip" basedir=".">
<!-- declare ant-contrib -->
<taskdef resource="net/sf/antcontrib/antcontrib.properties">
  <classpath>
    <pathelement location="${basedir}/ant-contrib-1.0b3.jar"/>
  </classpath>
</taskdef>

<property name="root" value ="folder"/>
<target name="zip">
    <delete file="${root}/archive.zip"/>
    <foreach list="${directory}" param="folder" target="zipdir"/>
</target>

<target name="zipdir">
    <echo>${folder}</echo>
    <zip destfile="${root}/archive.zip" update="true">
        <fileset dir="${root}">
            <include name="${folder}/**/*"/>
        </fileset>
    </zip>
</target>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...