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

时间:2014-09-10 09:57:30

标签: javascript gradle build-process war

在开发过程中,我们使用的是未缩小的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路径?或者是否有更好/更简单的方法来包含缩小的文件?

2 个答案:

答案 0 :(得分:7)

比我想象的要难:

war {
    it.dependsOn minifyJavaScript
    exclude "js"
    from( "${buildDir}/js", {
        into 'js'
    })
}

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

答案 1 :(得分:0)

将文件放在src/main/webapp目录下。将从该位置自动拾取。