在开发过程中,我们使用未缩小的 javascript 和 CSS 文件。但是当构建生产 war 时,它们必须被缩小(使用 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 路径?或者是否有更好/更简单的方法来包含缩小的文件?
最佳答案
这比我想象的要难:
war {
it.dependsOn minifyJavaScript
exclude "js"
from( "${buildDir}/js", {
into 'js'
})
}
我必须排除未缩小的 JS 文件,而不包括缩小的 JS 文件。必须排除原始文件,否则 js 目录中的文件是重复的(在创建的 WAR 文件中)。
关于javascript - 在创建 WAR 之前使用 gradle 添加生成的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25762456/