Ant包含文件集中的dir内容,同时展平path / to / dir

时间:2012-07-09 16:22:20

标签: ant

我正在尝试让Ant在fileset中包含一个目录,而不必诉诸冗长的解决方案(除非我真的需要)。也许我错过了一些明显的东西。

<copy todir="targetdir">
    <fileset dir="@{source}">
        <include name="**/somedir/" />
    </fileset>
</copy>

我正在尝试从somedir获取@{source}/path/to/somedir内容,包括所有子目录,而不明确知道somedir的位置。< / p>

所以,说somedir有两个子目录,sub1sub2,目标是让这两个目录最终都在targetdir(包括所有这些目录)内容)。

我不能只是压扁整个事情,因为这会破坏子目录中的目录结构,而上面列出的当前解决方案让我targetdir包含somedir,而不仅仅是内容。

我之后不想移动目录,因为理论上我可以在文件集中有多个包含各种路径的包含,都需要相同的副本。

1 个答案:

答案 0 :(得分:2)

使用复制元素中的mappers有两种方法可以做到这一点。最简单的方法是使用cut dirs mapper,但您需要知道要从路径中剪切的目标数量。您还可以使用regexp mapper删除主要的目录:

<regexpmapper from="^(([^/]*/)+?)/somedir/(.*)$$" to="\2"/>

以上是未经测试但应该定义2个捕获组,somedir之前的所有内容和somedir之后的位,而replace只是第二组。