我正在尝试修复HTML5 Boilerplate ant任务中的错误。 这是一个“清单”目标,用于自动创建html5缓存清单文件。
3 the build script中的第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
解决此问题的最佳方法是什么?
答案 0 :(得分:0)
我明白了:
<!-- 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}部分,该部分保留图像的相对路径。