2014-09-10 39 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文件中)。

相關問題