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 回答