Можете ли вы сделать эту, казалось бы, простую задачу копирования Ant без использования foreach ant-contrib? - PullRequest
3 голосов
/ 22 февраля 2011

У меня есть исходный каталог с кучей плагинов.Каждый плагин имеет свой собственный каталог lib.Я хочу, чтобы содержимое каждого из этих lib каталогов было объединено в один каталог lib в моей сборке.Теоретически вы должны сделать что-то вроде этого:

<copy todir="build/web/lib">
    <fileset dir="web/plugins/*/lib/" includes="**/*" />
</copy>

Однако Ant задыхается, когда атрибут dir содержит подстановочный знак.Является ли ant-contrib единственной альтернативой, или вы можете заставить эту работу работать с ванильным муравьем?

Дроссельное сообщение build.xml:28: [...]/web/plugins/*/lib does not exist.

1 Ответ

5 голосов
/ 22 февраля 2011

Атрибут dir= набора файлов не принимает подстановочный знак - следовательно, вы видите ошибку.Вам нужно указать один каталог, в данном случае web/plugins, и использовать несколько другой подстановочный знак для включений:

<copy todir="build/web/lib">
    <fileset dir="web/plugins" includes="*/lib/**/*" />
</copy>

Если вам нужно изменить пути при копировании, вы можете использовать mapper , например, flattenmapper даст вам имена файлов с удалением всей ведущей информации каталога.

...