我试过这样的东西:
<copy todir="target/classes">
<fileset dir="${basedir}" includes="*/src/main/resource/**"/>
</copy>
但它复制了target/classes/sub-dir/src/main/resource/file.txt
之类的东西,我希望它是target/classes/file.txt
。我该怎么做?我必须使用映射器吗?
编辑:我添加了<mapper type="regexp" from="^.*/src/main/resource/(.*)$" to="1"/>
,这似乎起到了作用。(注意:我稍后会清理正则表达式,使其更紧凑。)
这是最好的方法吗?
嵌套的<cutdirsmapper>
将起作用。。。
[cutdirsmapper]从源文件名中删除已配置数量的前导目录。
<cutdirsmapper>
删除前导目录后,它将保留目录结构的所有剩余部分。。。
<copy todir="target/classes">
<fileset dir="${basedir}" includes="*/src/main/resource/**"/>
<cutdirsmapper dirs="4"/>
</copy>
运行Ant之前
$ find . -type f
./build.xml
./sub-dir/src/main/resource/another-sub-dir/file2.txt
./sub-dir/src/main/resource/file1.txt
运行Ant之后
$ find . -type f
./build.xml
./sub-dir/src/main/resource/another-sub-dir/file2.txt
./sub-dir/src/main/resource/file1.txt
./target/classes/another-sub-dir/file2.txt
./target/classes/file1.txt
请注意,在应用映射之后,file2.txt
仍然处于another-sub-dir
之下。