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

标签 javascript gradle build-process war

在开发过程中,我们使用未缩小的 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/

相关文章:

javascript - 到目前为止以给定格式解析字符串

maven - 在 Android Studio 中优化构建时间

visual-studio - 无需外部可执行文件的 VS 2010 构建操作

eclipse - Scala 项目不会在 Eclipse 中自动构建

javascript - JS获取对象坐标

javascript - 如何使用 javascript 在 href 上禁用 google chrome 中的新选项卡选项

单击时的Javascript切换动画

android - 如何在项目Android Studio之间同步对gradle文件所做的所有更改

Android:如何仅通过 Gradle 生成签名 APK?

c++ - 在 Windows 和 Linux 上构建 C++