Как скопировать подкаталоги из нескольких безымянных каталогов - PullRequest
3 голосов
/ 07 мая 2010

Используя только Ant, я хочу скопировать подкаталоги некоторых каталогов верхнего уровня, но имена каталогов верхнего уровня могут измениться, поэтому мне нужно, чтобы Ant программно определил, какие каталоги копировать.

Другими словами, учитывая приведенную ниже примерную структуру каталогов, скопируйте содержимое каждого каталога ./<projectX>/bin в ./bin.

bin
project1
   \-- bin
        \-- com
             \-- name
                  \-- dir1
                        \-- file1.class
                        \-- file2.class
                        \-- file3.class
                  \-- dir2
                        \-- file4.class
                        \-- file5.class
project2
   \-- bin
        \-- com
             \-- name
                  \-- dir3
                        \-- file6.class
                        \-- file7.class
                        \-- file8.class
project3
   \-- bin
        \-- com
             \-- name
                  \-- dir4
                        \-- file9.class
                  \-- dir5
                        \-- file10.class
                        \-- file11.class

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

bin
  \-- com
       \-- name
            \-- dir1
                  \-- file1.class
                  \-- file2.class
                  \-- file3.class
            \-- dir2
                  \-- file4.class
                  \-- file5.class
            \-- dir3
                  \-- file6.class
                  \-- file7.class
                  \-- file8.class
            \-- dir4
                  \-- file9.class
            \-- dir5
                  \-- file10.class
                  \-- file11.class

Я пробовал

    <copy todir="${basedir}/bin">
        <fileset dir="${basedir}">
            <include name="**/bin/*"/>
            <exclude name="bin"/>
        </fileset>
    </copy>

, но включает каталоги projectX/bin под каталогом bin верхнего уровня.

1 Ответ

2 голосов
/ 07 мая 2010

Вы можете использовать mapper для генерации путей назначения из источников, например:

<copy todir="${basedir}/bin">
    <fileset dir="${basedir}">
        <include name="*/bin/**"/>
    </fileset>
    <regexpmapper from=".*/bin/(.*)" to="\1" />
</copy>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...