将 'cp -r $BASEDIR/*/src/main/resource/* $BASEDIR/target/classes/." 翻译成 ant 的复制命令



我试过这样的东西:

<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之下。

相关内容

  • 没有找到相关文章

最新更新