Gradle传统的多模块构建:解决糟糕的选择

时间:2014-01-08 20:11:49

标签: java gradle

我有一个遗留的WebApp项目,由许多遗留模块和一些新模块组成。我正在努力将现有项目迁移到基于Gradle的构建,而不用更改文件夹结构(至少目前为止)。

模块结构非常扁平,如下所示:

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

现在让我们说module1module2需要部署在WAR文件中,比如说war1.warmodule3module4在另一个WAR文件中,说war2.war,最后newModule:sub1newModule:sub2将被部署为两个独立的应用程序。

现在我正在讨论如何创建这些工件。我是否应该为每个工件分别设置一个额外的war模块,即一个用于war1而另一个用于war2?或者我应该在根项目中有两个任务?如果是这样,我如何使用war插件生成许多不同的工件?或者我应该选择一个模块作为两个工件的主机,即module1构建war1module3构建war2或类似的东西?或者最后我应该重新组织项目(我正在努力避免这样做):

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

1 个答案:

答案 0 :(得分: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的容器,我建议你使用这些设置。你怎么看?