我正在用 ant 文件集/regexpmapper 将头撞在砖墙上,试图简单地重命名一个目录(在路径中间)......
情况其实很简单:
component/DB/
我有要复制到的路径DB/api/src/main/distribution/component
。- 路径组件/DB 包含一组 install.sql 脚本和一个名为
api
(或“API”或“Api”)的目录。这个“api”目录包含额外的 sql,并将被批量复制到目标中DB/api/component
(因此创建DB/api/src/main/distribution/component/api
)。 - 作为此副本的一部分,我只想将“api”目录名称小写以保持一致性。
听起来很简单,我一直在使用文件集和regexpmapper
(或mapper type=regexp
)来实现这一点。${file.separator}
但是,我得到了好坏参半的结果......值得注意的是,一旦我将“/”放入(或“\\”或“/”或,即使使用regexpmapper.handledirsep=yes
),它也不起作用。
这是混淆的源路径结构(来自find
):
component/DB/
component/DB/API
component/DB/API/file1.sql
component/DB/API/file2.sql
component/DB/xyz.sql
component/DB/Install_API.sql
component/DB/excludes1/...
我的基本副本如下:
<copy todir="${my.db.api.dir}/src/main/distribution/component" verbose="true">
<fileset dir="${component.src.dir}/DB">
<exclude name="exclude1"/>
<exclude name="exclude1/**/*"/>
</fileset>
<regexpmapper handledirsep="yes"
from="(.*)/API(.*)" to="\1/api\2"/>
<!--mapper type="regexp" from="(.*)/API(.*)" to="\1/api\2"/-->
</copy>
为了清楚起见,我留下了简单的“/”。您可以看到基本前提是发现“API”,抓取周围的文本并用“api”重播它。如果我在其中省略了“/”,from
那么这确实有效,但是一旦我将“/”(或它的朋友)放入,则根本不会复制目录。请注意,我想要前面的“/”,因为我只想重命名该目录,而不是其中包含的 Install_API.sql 文件。
网上有很多示例,但似乎没有人遇到过这个问题,因为所谓的工作示例似乎都使用普通的“/”、“\”或声称由handledirset
属性处理。
RH6.3 上的蚂蚁 1.8.4
非常感谢。