我正在尝试修复HTML5样板蚂蚁任务中的一个错误。有一个"清单"目标,用于自动创建 html5 缓存清单文件。
构建脚本中的第 717 行是存在错误的区域:
<!-- add image files -->
<echo message="Updating the site.manifest with the images"/>
<for param="file">
<path>
<fileset dir="./${dir.source}/${dir.images}/" includes="**/*"/>
</path>
<sequential>
<basename property="filename.@{file}" file="@{file}" />
<replaceregexp match="# image files" replace="# image files${line.separator}${dir.images}/${filename.@{file}}" file="${dir.intermediate}/${file.manifest}" />
</sequential>
</for>
问题是,给定一个目录结构,如下所示:
img/image1.jpg
img/subdir/image2.jpg
输出忽略子目录:
img/image1.jpg
img/image2.jpg
解决此问题的最佳方法是什么?
我想通了:
<!-- add image files -->
<echo message="Updating the site.manifest with the images"/>
<for param="file">
<path>
<fileset dir="./${dir.source}/${dir.images}/" includes="**/*"/>
</path>
<sequential>
<path id="fullPath.@{file}">
<pathelement location="@{file}" />
</path>
<pathconvert property="relPath.@{file}" refid="fullPath.@{file}">
<globmapper from="${basedir}/*" to="*" />
</pathconvert>
<replaceregexp match="# image files" replace="# image files${line.separator}${relPath.@{file}}" file="${dir.intermediate}/${file.manifest}" />
</sequential>
</for>
它获取元素的绝对路径,然后使用 globmapper 删除 ${basedir} 部分,从而留下图像的相对路径。