Удалить имена файлов наборов файлов, но в другом каталоге

Итак, у меня есть набор файлов, содержащий файлы в одном каталоге:

<fileset id="modules" dir="${modules.dir}">
    <include name="core*.jar"/>
    <include name="fileset*.jar"/>
    <include name="upgrader*.jar"/>
    <include name="hello*.jar"/>
</fileset>

Однако эти файлы копируются в $ {lib.dir}, т.е. $ {lib.dir} содержит копии ядра * .jar, набора файлов * .jar и т. Д. Как мне удалить эти скопированные файлы?


Также обратите внимание, что я не могу использовать внешние библиотеки, такие как ant-contrib.


person Amil    schedule 11.01.2013    source источник


Ответы (1)


Используйте PatternSet, чтобы определить набор имен. Затем укажите этот PatternSet в любом количестве FileSet.

<patternset id="module.patterns">
    <include name="core*.jar"/>
    <include name="fileset*.jar"/>
    <include name="upgrader*.jar"/>
    <include name="hello*.jar"/>
</patternset>

<fileset id="modules" dir="${modules.dir}" >
  <patternset refid="module.patterns"/>
</fileset>

ОБНОВЛЕНИЕ:

Учитывая ваш комментарий, что вам нужны только исходные файлы, попробуйте следующее:

<pathconvert pathsep="," property="flattened.modules" refid="modules">
    <mapper type="flatten" />
</pathconvert>

<filelist id="libmodules" dir="${lib.dir}" files="${flattened.modules}"/> 
person satur9nine    schedule 11.01.2013
comment
Предполагая, что следующим шагом будет создание набора файлов в $ {lib.dir}, который соответствует набору шаблонов module.patterns, это не сработает. Это потому, что мой $ {lib.dir} содержит другие файлы ядра * .jar, которых нет в $ {modules.dir} (и которые не были скопированы), и я не хочу их также удалять. - person Amil; 12.01.2013
comment
Этот ответ тоже может помочь: stackoverflow.com/questions/13290555/ - person satur9nine; 17.01.2013