在WAR创建之前使用gradle添加生成的文件

Dan*_*iel 4 javascript build-process war gradle

在开发过程中,我们使用的是未缩小的javascript和CSS文件.但是,当生产战争建立时,它们必须缩小(使用yuicompressor).所以,我想用缩小的文件替换原始的javascript和CSS文件.项目结构如下(没什么特别的):

+ webapp
|-- js
|-- css
...
Run Code Online (Sandbox Code Playgroud)

我想要做的是:在Gradle创建WAR之前,我想用yuicompressor缩小上面提到的文件,并希望它们被打包在WAR中.

到目前为止我所做的是在创建WAR之前运行一个任务,这会缩小文件:

war {
   it.dependsOn minifyJavaScript
}
Run Code Online (Sandbox Code Playgroud)

minifyJavaScript任务获取webapp/js文件夹中的所有文件,缩小它们并将它们存储在$ {buildDir}/js目录中.我唯一无法工作的是这些文件被打包到WAR中.我试着调整sourceSets,但是我从Gradle得到了一个错误:

apply plugin: 'java'

...
sourceSets {
    main {
        webapp {
            srcDir "${buildDir}/js"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

错误:找不到支持的Gradle DSL方法:'sourceSets()'

我还尝试将文件包含在:

war {
   it.dependsOn minifyJavaScript
   include ${buildDir}/js
}
Run Code Online (Sandbox Code Playgroud)

此解决方案的问题是WAR仅包含缩小的文件.

那么,有没有办法告诉Gradle在WAR创建过程中添加$ {buildDir}/js路径?或者是否有更好/更简单的方法来包含缩小的文件?

Dan*_*iel 7

它比我想象的更难:

war {
    it.dependsOn minifyJavaScript
    exclude "js"
    from( "${buildDir}/js", {
        into 'js'
    })
}
Run Code Online (Sandbox Code Playgroud)

我要排除未缩小的JS文件,而不是包含缩小的文件.必须排除原始文件,否则js目录中的文件将被复制(在创建的WAR文件中).