2014-01-08 42 views
1

我有一個遺留WebApp項目,由許多遺留模塊和一些新模塊組成。我正在努力將現有項目遷移到基於Gradle的版本而不是更改文件夾結構(至少現在)。Gradle遺留多模塊構建:解決不良選擇

模塊結構是在以下非常平:

project-root 
|-- module1 
|-- module2 
|-- module3 
|-- module4 
|-- newModule (newly added!) 
| |-- sub1 
| |-- sub2 

現在讓我們說module1module2需要一個WAR文件進行部署,說war1.warmodule3並以不同的WAR文件module4,說war2.war,最後newModule:sub1newModule:sub2將作爲兩個獨立應用程序部署。

現在我在討論如何創建這些工件。我是否應該爲每個工件單獨添加一個戰爭模塊,即一個用於war1,另一個用於war2?或者我應該在根項目中有兩項任務?如果是這樣,我怎樣才能使用戰爭插件來產生許多不同的文物?或者我應該選擇一個模塊作爲兩個工件的主機,即module1構建war1module3構建war2或類似的東西?終於還是我應該重新組織項目(我想避免這樣做),以這樣的事:

project-root 
|-- war1 
| |-- module1 
| |-- module2 
|-- war2 
| |-- module3 
| |-- module4 
|-- newModule 
| |-- sub1 
| |-- sub2 

回答

1

我建議你:

project-root 
|-- module1 - apply plugin: 'jar' 
|-- module2 - apply plugin: 'jar' 
|-- module3 - apply plugin: 'jar' 
|-- module4 - apply plugin: 'jar' 
|-- newModule (newly added!) 
| |-- sub1 
| |-- sub2 
|-- war1 - apply plugin: 'war' 
| dependencies { 
|  compile project(':module1') 
|  compile project(':module2') 
| } 
|-- war2 - apply plugin: 'war' 
| dependencies { 
|  compile project(':module3') 
|  compile project(':module4') 
| } 

WAR1和WAR2是單純的容器build.gradle與我建議你的設置。你如何看待它?

+0

這是我想出了一段時間後想出來的解決方案。我認爲它會起作用。 –

+0

它會工作,並且是一個很好的和靈活的解決方案。使現有項目成爲主機也很好,如果每次戰爭都有一個項目明顯與戰爭有關(例如包含所有的JSP),並且沒有在不同環境中重用的潛力,那麼這是一個自然的解決方案。重新組織目錄結構沒有任何優勢。例如,即使是平坦的結構,Gradle也足夠聰明,可根據需要自動重建相關項目。總之,傳統結構看起來並不糟糕。 –