我正在尝试让Ant在fileset
中包含一个目录,而不必诉诸冗长的解决方案(除非我真的需要)。也许我错过了一些明显的东西。
<copy todir="targetdir">
<fileset dir="@{source}">
<include name="**/somedir/" />
</fileset>
</copy>
我正在尝试从somedir
获取@{source}/path/to/somedir
的内容,包括所有子目录,而不明确知道somedir
的位置。< / p>
所以,说somedir
有两个子目录,sub1
和sub2
,目标是让这两个目录最终都在targetdir
(包括所有这些目录)内容)。
我不能只是压扁整个事情,因为这会破坏子目录中的目录结构,而上面列出的当前解决方案让我targetdir
包含somedir
,而不仅仅是内容。
我之后不想移动目录,因为理论上我可以在文件集中有多个包含各种路径的包含,都需要相同的副本。
答案 0 :(得分:2)
使用复制元素中的mappers有两种方法可以做到这一点。最简单的方法是使用cut dirs mapper,但您需要知道要从路径中剪切的目标数量。您还可以使用regexp mapper删除主要的目录:
<regexpmapper from="^(([^/]*/)+?)/somedir/(.*)$$" to="\2"/>
以上是未经测试但应该定义2个捕获组,somedir之前的所有内容和somedir之后的位,而replace只是第二组。