【发布时间】:2016-10-18 17:26:24
【问题描述】:
我有一个蚂蚁任务,我想从 foreach 循环中调用它,如下所示:
<target name="iteratorTarget">
<foreach target="copynow" param="some.location">
<path refid="some.classpath"/>
</foreach>
</target>
<target name="copynow">
<!-- Do some regex related operations -->
<propertyregex property="from.directory" input="${some.location}" select="\1"/>
<copy file="${from.directory}" todir="${dest.dir}"/>
</target>
正如您在上面的代码中看到的,我从 foreach 传递的一个参数是some.location。现在我想传递另一个参数dest.dir,我在上面代码的倒数第二行中使用了它。
那么,我如何将多个参数(在我的情况下为some.location 和dest.dir)从我在上面的代码中定义的foreach 传递到copynow 目标。
编辑
这里是我的问题的更多细节。首先是一些前提:
基本上,我有一个类路径文件,其中包含已定义的 jar 位置列表。示例 -
direc1/subdir1/somejar1.jar
direc2/subdir2/somejar2.jar
direc3/subdir3/somejar3.jar
根据以上信息,我想确保无论何时将 jar 复制到给定的 dest。 ,其等效许可证也会复制到给定的目标。
许可证存储如下-
direc1/subdir1/license/license*.txt
direc2/subdir2/license/license*.txt
direc3/subdir3/license/license*.txt
我在这里想要实现的是我想遍历类路径条目,然后使用正则表达式,获取目录直到 subdir 。例如 'direc1/subdir1' ,然后我将 license 附加到获得的正则表达式并复制该文件夹中存在的所有文件,然后我将 jar 复制到所需的目的地。
我上面给出的代码实现了同样的效果。
唯一剩下的是复制目标目录不是恒定的并且会变化。因此,我想以某种方式将复制目标目录作为参数发送到copynow target.Help!
【问题讨论】:
-
foreach 任务不是标准的 ANT 任务。你为什么不描述你想要的行为,然后也许可以用另一种方式来实现?
-
为了可重用性,
macrodef可能是一个不错的选择,您可以每次传递不同的值。 -
@MarkO'Connor 详细说明了我的问题。请让我知道您的意见
标签: ant ant-contrib