Приложение Grails: запутывание файлов JS

Я хотел бы заменить js-файлы их минимизированными версиями (минимизированными компилятором Closure — https://developers.google.com/closure/compiler/docs/gettingstarted_app) в файле war. Для создания войны я использую ant:

...
<target name="war" depends="buildnumber" description="--> Creates a WAR of a Grails application">
    <grails command="war" environment="${grails.env}"/>
</target>
...

Я добавил:

grails.project.resources = { stagingDir ->
    delete(file:"${stagingDir}/js/*.js")
}

в ‹root>\grails-app\conf\BuildConfig.groovy, но файлы js не удаляются для файла войны.

Как я могу предоставить список файлов для минимизации в файле сборки ant и как добавить его в окончательный файл войны?

ОБНОВЛЕНО:

Я добавил следующее в \grails-app\conf\BuildConfig.groovy, чтобы скопировать свернутые файлы в военный файл. На первом этапе ant минимизирует файлы js. На следующем этапе создается военный файл, и на этом этапе исходные файлы js заменяются свернутыми файлами.

grails.war.resources = { stagingDir, args ->
    def jsFiles = [
            'file1.js',
            'file2.js',
            'file3.js',
            ...
            'templates.common.js'
    ];
    for (file in jsFiles) {
        File f = new File("minimizedjs\\${file}");
        if(f.exists()) {
            copy(file: "minimizedjs\\${file}", tofile: "${stagingDir}\\js\\${file}")
        }
        else {
            println('.....!');
            break;
        }
    }
}

person DraganS    schedule 11.12.2012    source источник
comment
Вам следует взглянуть на плагин ресурсов с yui-minify-resources.   -  person doelleri    schedule 12.12.2012


Ответы (2)


Для этого есть подключаемый модуль — http://grails.org/plugin/closure-compiler. ручной процесс с помощью Ant.

person Burt Beckwith    schedule 11.12.2012

Ответ Берта Беквита правильный.

Вот конкретные причины, по которым ваше решение не работает:

  • Должно быть grails.war.resources. не grails.project.resources: см. Руководство
  • Чтобы использовать подстановочные знаки в ant, используйте тег fileset вместо атрибута file

Вот исправленная версия, которая должна работать:

grails.war.resources = { stagingDir, args ->
    delete() {
        fileset(dir:"${stagingDir}/js", includes: "*.js")
    }
}
person ataylor    schedule 11.12.2012
comment
Спасибо. Это было очень полезно. - person DraganS; 13.12.2012