我想用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;
}
}
}
答案 0 :(得分:5)
有一个插件 - http://grails.org/plugin/closure-compiler - 因此不需要使用Ant的手动过程。
答案 1 :(得分:4)
Burt Beckwith的答案是正确答案。
以下是您的解决方案无法解决的具体原因:
grails.war.resources
。不是grails.project.resources
:请参阅Manual fileset
标记而不是file
属性这是一个应该有效的固定版本:
grails.war.resources = { stagingDir, args ->
delete() {
fileset(dir:"${stagingDir}/js", includes: "*.js")
}
}