2014-09-10 66 views
4

在开发过程中,我们使用的是未缩小的javascript和CSS文件。但是,当生产战争建立起来时,他们必须被缩小(使用压缩机)。所以,我想用缩小的替换原来的javascript和CSS文件。 项目结构如下所示(没有什么特别):在WAR创建之前使用gradle添加生成的文件

+ webapp 
|-- js 
|-- css 
... 

我想要做的是:由摇篮创建WAR之前,我要来缩小上述用的YUICompressor文件,并希望它们被包装在战争中。

我所做的迄今运行任务创建WAR之前,这minifies文件:

war { 
    it.dependsOn minifyJavaScript 
} 

任务minifyJavaScript发生在webapp/JS文件夹中的所有文件,minifies他们,并将其储存在$ {buildDir}/js目录中。我无法工作的唯一的事情是这些文件被打包到WAR中。我试图调整sourceSets,但我从摇篮错误:

apply plugin: 'java' 

... 
sourceSets { 
    main { 
     webapp { 
      srcDir "${buildDir}/js" 
     } 
    } 
} 

错误:发现不支持的摇篮DSL方法:“)sourceSets(”

我也试过,包括与这些文件:

war { 
    it.dependsOn minifyJavaScript 
    include ${buildDir}/js 
} 

该解决方案的问题在于WAR仅包含缩小的文件。

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

回答

0

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

+2

我不能把“生成”文件,因为他们必须在js目录中。缩小过程会覆盖原始文件或我必须选择不同的名称。 – Phillip 2014-09-11 06:49:42

+0

你能准备一个SSCCE并通过github分享吗? – Opal 2014-09-11 07:37:31

6

它比我想象的更难:

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

我已经排除了不精缩JS文件,比包括精缩的。必须排除原始文件,否则js目录中的文件将被复制(在创建的WAR文件中)。

相关问题