2

我试图让 Ant 在 a 中包含一个目录,fileset而不必求助于冗长的解决方案(除非我真的必须这样做)。也许我错过了一些明显的东西。

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

我正在尝试从中获取 的内容somedir包括所有子目录,@{source}/path/to/somedir但不明确知道在哪里somedir

所以,说somedir有两个子目录,sub1并且sub2,目标是让这两个目录最终进入targetdir(包括它们的所有内容)。

我不能把整个事情弄平,因为这会杀死子目录中的目录结构,而上面概述的当前解决方案让我有了targetdircontains somedir,而不仅仅是它的内容。

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

4

1 回答 1

2

There are a couple of ways to do this using mappers inside the copy element. The easiest way is to use a cut dirs mapper but you will need to know the amount of dirs you want to cut from the path. You could also use a regexp mapper to remove the leading dirs:

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

The above is untested but should define 2 capturing groups, everything before somedir and the bit after somedir, and replace is just the second group.

于 2012-07-09T21:18:23.963 回答