Grails app:JS文件混淆

时间:2012-12-11 20:35:59

标签: grails ant war google-closure-compiler

我想用war文件中的最小化版本(由Closure Compiler最小化 - https://developers.google.com/closure/compiler/docs/gettingstarted_app)替换js文件。要建立战争,我正在使用蚂蚁:

...
<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")
}

到&lt; root&gt; \ grails-app \ conf \ BuildConfig.groovy但是war文件不会删除js文件。

如何在ant build文件中提供最小化的文件列表,以及如何将其添加到最终war文件中?

更新:

我在\ grails-app \ conf \ BuildConfig.groovy中添加了以下内容,将最小化的文件复制到war文件中。在第一步中,ant最小化js文件。在下一步中,将生成war文件,此步骤将使用最小化文件替换原始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;
        }
    }
}

2 个答案:

答案 0 :(得分:5)

有一个插件 - http://grails.org/plugin/closure-compiler - 因此不需要使用Ant的手动过程。

答案 1 :(得分:4)

Burt Beckwith的答案是正确答案。

以下是您的解决方案无法解决的具体原因:

  • 应为grails.war.resources。不是grails.project.resources:请参阅Manual
  • 要在ant中使用通配符,请使用fileset标记而不是file属性

这是一个应该有效的固定版本:

grails.war.resources = { stagingDir, args ->
    delete() {
        fileset(dir:"${stagingDir}/js", includes: "*.js")
    }
}