在开发过程中,我们使用的是未缩小的javascript和CSS文件。但是,当生产战争建立时,它们必须缩小(使用yuicompressor)。所以,我想用缩小的文件替换原始的javascript和CSS文件。 项目结构如下(没什么特别的):
+ webapp
|-- js
|-- css
...
我想要做的是:在Gradle创建WAR之前,我想用yuicompressor缩小上述文件并希望它们被打包在WAR中。
到目前为止,我所做的是在创建WAR之前运行任务,这会缩小文件:
war {
it.dependsOn minifyJavaScript
}
任务minifyJavaScript获取webapp / js文件夹中的所有文件,缩小它们并将它们存储在$ {buildDir} / js目录中。我唯一无法工作的是这些文件被打包到WAR中。我试着调整sourceSets,但是我从Gradle得到了一个错误:
apply plugin: 'java'
...
sourceSets {
main {
webapp {
srcDir "${buildDir}/js"
}
}
}
错误:找不到支持的Gradle DSL方法:' sourceSets()'
我还尝试将文件包含在:
中war {
it.dependsOn minifyJavaScript
include ${buildDir}/js
}
此解决方案的问题在于WAR仅包含缩小的文件。
那么,有没有办法告诉Gradle在WAR创建过程中添加$ {buildDir} / js路径?或者是否有更好/更简单的方法来包含缩小的文件?
答案 0 :(得分:7)
比我想象的要难:
war {
it.dependsOn minifyJavaScript
exclude "js"
from( "${buildDir}/js", {
into 'js'
})
}
我要排除未缩小的JS文件,而不是包含缩小的文件。必须排除原始文件,否则js目录中的文件将被复制(在创建的WAR文件中)。
答案 1 :(得分:0)
将文件放在src/main/webapp
目录下。将从该位置自动拾取。