ant - 你能不使用ant-contrib的foreach来完成这个看似简单的Ant复制任务吗?

标签 ant copy wildcard

我有一个包含一堆插件的源目录。每个插件都有自己的 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/

相关文章:

java - 读取build.xml中的多个属性文件

php - SQL 匹配 5 个或更少的通配符

sql-server - %book% 的全文目录/索引搜索

if-statement - 如何有条件地设置exec任务的arg值?

ant - 用 Ant 检查引用

android - 在 C# 应用程序中构建 apk?

git - 用Git记录文件复制操作

c++ - 为什么从引用创建共享指针会复制对象?

html - 如何隐藏我的源代码以免被复制

SQL - 像和通配符,不是预期的结果