0

HTML5ボイラープレートantタスクのバグを修正しようとしています。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

この問題を解決するための最良の方法は何ですか?

4

1 に答える 1

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}部分を削除します。これにより、画像への相対パスが残ります。

于 2012-05-17T15:56:03.990 に答える