Используйте Ant, чтобы изменить дату последнего изменения файла - PullRequest
2 голосов
/ 31 января 2012

В настоящее время я использую YUI для сжатия файлов JavaScript с помощью Ant:

<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, который сравнивает дату последнего изменения, чтобы определить, нужно ли обновлять файл.

В идеале я хотел бы сохранить дату последнего изменения, чтобы при развертывании не обновлялись все файлы без необходимости, а также перезаписывались новые файлы на сервере (такое уже было раньше).

Ответы [ 2 ]

1 голос
/ 03 февраля 2012

Благодаря @ martin-clayton я смог использовать задачу Touch для восстановления только что созданных уменьшенных файлов до их первоначальных дат последнего изменения.

Ниже приведен параметризованный муравейный вызов, позволяющий легко минимизировать файлы 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>
1 голос
/ 31 января 2012

Предлагаем вам взглянуть на селекторы Ant, скорее всего, зависимый селектор . Они позволят вам ограничить сжатие только теми файлами, в которых несжатый 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...