使用Ant可以更改文件的最后修改日期



我目前正在使用YUI通过Ant:压缩JavaScript文件

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

但是,新创建的*-min.js文件现在具有更新的"上次修改"日期。当我使用RSYNC展开文件时,这就成了一个问题,RSYNC会比较上次修改的日期,以确定是否应该更新文件。

理想情况下,我希望保留上次修改的日期,这样卷展栏就不会不必要地更新所有文件,也不会覆盖服务器上的新文件(以前也发生过这种情况)。

建议您查看Ant选择器,很可能是dependent选择器。如果你明白我的意思的话,它们会让你把压缩限制在那些未压缩的javascript比以前的压缩版本更新的文件上。

例如:

<apply executable="java" parallel="false">
    <fileset dir="." includes="${build.web.dir}/js/*.js"
                     excludes="${build.web.dir}/js/*-min.js">
        <depend targetdir=".">
            <globmapper from="*.js" to="*-min.js"/>
        </depend>
    </fileset>
    <arg line="-jar"/>
    <arg path="yuicompressor-2.4.7.jar"/>           
    <srcfile/>
    <arg line="-o"/>
    <mapper type="glob" from="*.js" to="*-min.js"/>
    <targetfile/>      
</apply>

感谢@martin-clayton,我能够使用Touch Task将新创建的缩小文件恢复到原始的上次修改日期。

以下是一个参数化的ant调用,允许CSS和JS文件轻松缩小:

<target name="minify-filetype" >
    <echo>Minimise all ${filetype} files</echo>
    <apply executable="java" parallel="false">
        <fileset dir="." includes="${build.web.dir}/${filetype}/*.${filetype}"/>
        <arg line="-jar"/>
        <arg path="../../../etc/ant/trunk/lib/yuicompressor-2.4.7.jar"/>            
        <srcfile/>
        <arg line="-o"/>
        <mapper type="glob" from="*.${filetype}" to="*-min.${filetype}"/>
        <targetfile/>      
    </apply>
    <echo>Convert minified files back to original Last Modified dates</echo>
    <touch>
        <fileset dir="." includes="${build.web.dir}/${filetype}/*.${filetype}"
                         excludes="${build.web.dir}/${filetype}/*-min.${filetype}"/>
        <mapper type="glob" from="*.${filetype}" to="*-min.${filetype}"/>
    </touch>
    <!-- moving *-min.js and creating *.js files (overwriting orginal and deleting *-min) -->
    <move todir="${build.web.dir}/${filetype}/" overwrite="true" preservelastmodified="true">
        <fileset dir="${build.web.dir}/${filetype}/" />
        <mapper type="glob" from="*-min.${filetype}" to="*.${filetype}"/>
    </move>
</target>

相关内容

  • 没有找到相关文章

最新更新