在WAR创建之前使用gradle添加生成的文件
问题描述:
在开发过程中,我们使用的是未缩小的javascript和CSS文件。但是,当生产战争建立起来时,他们必须被缩小(使用压缩机)。所以,我想用缩小的替换原来的javascript和CSS文件。 项目结构如下所示(没有什么特别):在WAR创建之前使用gradle添加生成的文件
+ webapp
|-- js
|-- css
...
我想要做的是:由摇篮创建WAR之前,我要来缩小上述用的YUICompressor文件,并希望它们被包装在战争中。
我所做的迄今运行任务创建WAR之前,这minifies文件:
war {
it.dependsOn minifyJavaScript
}
任务minifyJavaScript发生在webapp/JS文件夹中的所有文件,minifies他们,并将其储存在$ {buildDir}/js目录中。我无法工作的唯一的事情是这些文件被打包到WAR中。我试图调整sourceSets,但我从摇篮错误:
apply plugin: 'java'
...
sourceSets {
main {
webapp {
srcDir "${buildDir}/js"
}
}
}
错误:发现不支持的摇篮DSL方法:“)sourceSets(”
我也试过,包括与这些文件:
war {
it.dependsOn minifyJavaScript
include ${buildDir}/js
}
该解决方案的问题在于WAR仅包含缩小的文件。
那么,有没有办法告诉Gradle在WAR创建期间添加$ {buildDir}/js路径?还是有更好/更简单的方法来包含缩小的文件?
答
将文件放在src/main/webapp
目录下。会从这个位置自动拾取。
答
它比我想象的更难:
war {
it.dependsOn minifyJavaScript
exclude "js"
from("${buildDir}/js", {
into 'js'
})
}
我已经排除了不精缩JS文件,比包括精缩的。必须排除原始文件,否则js目录中的文件将被复制(在创建的WAR文件中)。
我不能把“生成”文件,因为他们必须在js目录中。缩小过程会覆盖原始文件或我必须选择不同的名称。 – Phillip 2014-09-11 06:49:42
你能准备一个SSCCE并通过github分享吗? – Opal 2014-09-11 07:37:31