我有一个包含一堆插件的源目录。每个插件都有自己的 lib
目录。我希望将每个 lib
目录的内容合并到我的构建中的单个 lib
目录中。理论上你会做这样的事情:
<copy todir="build/web/lib">
<fileset dir="web/plugins/*/lib/" includes="**/*" />
</copy>
但是,当 dir 属性包含通配符时,Ant 会阻塞。 ant-contrib 是唯一的选择吗,或者您可以使用 vanilla ant 来完成这项工作吗?
阻塞消息是 build.xml:28: [...]/web/plugins/*/lib 不存在。
最佳答案
文件集的 dir=
属性不使用通配符 - 因此会出现您看到的错误。您需要指定一个目录,在本例中为 web/plugins
,并为包含使用略有不同的通配符:
<copy todir="build/web/lib">
<fileset dir="web/plugins" includes="*/lib/**/*" />
</copy>
如果您需要在复制时更改路径,您可以使用 mapper ,例如 flattenmapper
将为您提供文件名,其中所有前导目录信息都被剥离。
关于ant - 你能不使用ant-contrib的foreach来完成这个看似简单的Ant复制任务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5072044/