1

こんにちは、ディレクトリからすべての .css および .js ファイルを圧縮し、元のファイルを同じ名前 (連結なし) で上書きしようとしています。

私はこのコードを使用していますhttps://stackoverflow.com/a/3826896/579646 (他の多くのチュートリアルも試しました)が、機能しません。

私はこれを試しました

<target name="css.minify">
        <apply executable="java" parallel="false" dest="${builddir}/${NAME}/site/assets/css" verbose="true">
            <fileset dir="${builddir}/${NAME}/site/assets/css" includes="**/*.css"/>
            <arg line="-jar"/>
            <arg path="yuicompressor.jar"/>
            <arg line="--line-break 0"/>
            <srcfile/>
            <arg line="-o"/>
            <arg line="-v"/>
            <mapper type="glob" from="*.css" to="*-min.css"/>
            <targetfile/>
        </apply>

        <move todir="${builddir}/${NAME}/site/assets/css" overwrite="true" >
                <fileset dir="${builddir}/${NAME}/site/assets/css" />
                <mapper type="glob" from="*-min.css" to="*.css"/>
                </move>
    </target>

この

<target name="js.minify">
    <apply executable="java" parallel="false">
        <fileset dir="${builddir}/${NAME}/site/assets/js" includes="**/*.js" casesensitive="no"/>
        <arg line="-jar"/>
        <arg path="yuicompressor.jar"/>
        <srcfile/>
        <arg line="-o"/>
        <mapper type="glob" from="*.js" to="*.js"/>
        <targetfile/>
    </apply>


</target>

どっちも失敗しそうだ

私は何を間違っていますか?

4

2 に答える 2

1

なぜ機能しないのかを確認するために、jar を直接使用してテストを行いました。コマンドラインから、これが正しいコマンドオプションシーケンスであることを理解しました:

$java -jar WEB-INF/lib/yuicompressor.jar -v -o <destination-file-min.js> <source-file.js>

宛先ファイルのパス (親フォルダー) が存在しない場合、ライブラリーはそれを作成しません (java.io.FileNotFoundException) ことに注意してください。

だから、アント:

    <copy flatten="false" includeemptydirs="true" todir="${js.target.dir}">
        <fileset dir="${js.source.dir}" excludes="**/*.*"  includes="**/*" />
    </copy>
    <apply executable="java"  dest="${js.target.dir}" parallel="false" verbose="true" ignoremissing="true">
            <fileset dir="${js.source.dir}" includes="**/*.js" excludes="**/*-min.js, **/*.min.js"/>
            <arg line="-jar"/>
            <arg path="docroot/WEB-INF/lib/yuicompressor.jar"/> 
            <arg line="-o"/>
            <mapper type="glob" from="*.js" to="*-min.js"/>
            <targetfile/>
            <srcfile/>
     </apply>

適用前のコピーは、宛先の縮小された js の相対パスを作成するために必要です。 targetfile と srcfile は、jar によって予想されるように逆になっていることに注意してください。js部分だけ貼り付けました.cssも同じです。

于 2013-07-30T09:27:58.623 に答える
-1

私はこれをcssとjsの両方に使用していますが、問題なく動作します:

<apply executable="java" parallel="false">
    <fileset dir="${src.dir}/js" includes="*.js" />
    <arg line="-jar" />
    <arg path="${lib.path}/yuicompressor-2.4.7.jar" />
    <srcfile />
    <arg line="-o" />
    <mapper type="glob" from="*.js" to="${dest.dir}/js/*.js" />
    <targetfile />
</apply>

共有された js.minify ターゲットでは、js ファイルを上書きしているように見えます (mapper タグを見てください)。注意してください。

また、CSS では、すべての CSS を移動し、圧縮後に名前を変更しています。これはすべて、yui コンプレッサー ターゲットを使用して行うことができます (私のコードを見てください)。

これが役立つことを願っています。

于 2013-05-28T19:29:45.647 に答える