Это не так сложно ...
<copy todir="${copy.dir}">
<fileset dir="temp">
<include name="**/dir3/**"/>
</fileset>
</copy>
Когда вы используете директиву include
, она будет включать только те файлы, которые соответствуют заданному вами шаблону. В этом случае я копирую только те файлы, которые имеют /dir3/
где-то в своем полном пути. Это включает подкаталоги под dir3
и все файлы под dir3
.
Вы можете использовать директиву exclude
для переопределения директив include
:
<copy todir="${copy.dir}">
<fileset dir="temp">
<include name="**/dir3/**"/>
<exclude name="**/dir3/*"/>
</fileset>
</copy>
Это скопирует все подкаталоги и файлы в этих подкаталогах, но не файлы в самом dir3
. *
соответствует всем файлам в каталоге, в то время как **
соответствует всем файлам во всем дереве каталогов.
Обратите внимание, что это создаст каталог temp/dir2/dir3
. Если я хочу temp/dir3
, я должен установить свой набор файлов в родительский каталог dir3
:
<copy todir="${copy.dir}">
<fileset dir="temp/dir2">
<include name="dir3/**"/>
</fileset>
</copy>
Делаем это:
<copy todir="${copy.dir}">
<fileset dir="temp/dir2/dir3"/>
</copy>
Создает каталог temp
со всеми файлами непосредственно в dir3
непосредственно в temp
. Также будет каталог temp/dir4
и temp/dir5
, содержащий все файлы (и деревья каталогов) в этих каталогах.