How to copy subdirectories of several unnamed directories

Using only Ant, I want to copy subdirectories of some top-level directories, but the names of top-level directories can change, so I need Ant to programmatically determine which directories will be copied.

In other words, given the sample directory structure below, copy the contents of each directory ./<projectX>/binto ./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

And the end result will be a bin directory, which looks like this:

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

I tried

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

but includes directories projectX/binunder the top-level bin directory.

+3
source share
1 answer

mapper , :

<copy todir="${basedir}/bin">
    <fileset dir="${basedir}">
        <include name="*/bin/**"/>
    </fileset>
    <regexpmapper from=".*/bin/(.*)" to="\1" />
</copy>
+2

Source: https://habr.com/ru/post/1744419/


All Articles