1

我想在 war 文件中用最小化版本(由 Closure Compiler - https://developers.google.com/closure/compiler/docs/gettingstarted_app最小化)替换 js 文件。为了建立战争,我正在使用 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 文件不会为 war 文件删除。

如何在 ant 构建文件中提供要最小化的文件列表,以及如何将其添加到最终的战争文件中?

更新:

我将以下内容添加到 \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;
        }
    }
}
4

2 回答 2

5

有一个插件 - http://grails.org/plugin/closure-compiler - 所以不需要使用 Ant 进行手动处理。

于 2012-12-11T21:35:17.180 回答
4

Burt Beckwith 的答案是正确的。

以下是您的解决方案不起作用的具体原因:

  • 应该是grails.war.resources。不grails.project.resources:见手册
  • 要在 ant 中使用通配符,请使用fileset标签而不是file属性

这是一个应该可以工作的固定版本:

grails.war.resources = { stagingDir, args ->
    delete() {
        fileset(dir:"${stagingDir}/js", includes: "*.js")
    }
}
于 2012-12-11T21:44:04.930 回答