2012-07-09 113 views
2

我试图让Ant在fileset中包含一个目录,而不必诉诸冗长的解决方案(除非我真的必须)。也许我错过了一些明显的东西。Ant包括fileset中的目录内容,同时压扁路径/ to /目录

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

我试图让的somedir内容,包括所有子目录,从@{source}/path/to/somedir虽然没有明确地知道哪里somedir是。

所以,说somedir有两个子目录,sub1sub2,我们的目标是有这两个目录中targetdir结束(包括其所有内容)。

我不能将所有东西弄平,因为这会杀死子目录内的目录结构,上面提到的当前解决方案给我留下了包含somedirtargetdir,而不仅仅是它的内容。

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

回答

2

有几种方法可以在复制元素中使用mappers。最简单的方法是使用cut dirs mapper,但您需要知道您想要从路径中切下的目镜的数量。你也可以使用一个regexp mapper删除前导迪尔斯:

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

以上是未经测试,但应该定义2个捕获组,somedir和somedir后前位的一切,取而代之的是只在第二组。