Java Gradle遗留多模块构建:解决错误选择

Java Gradle遗留多模块构建:解决错误选择,java,gradle,Java,Gradle,我有一个遗留WebApp项目,由许多遗留模块和一些新模块组成。我正在将现有项目迁移到基于Gradle的构建中,而不改变文件夹结构(至少目前是这样) 模块结构非常扁平,如下所示: project-root |-- module1 |-- module2 |-- module3 |-- module4 |-- newModule (newly added!) | |-- sub1 | |-- sub2 现在让我们假设module1和module2需要部署在一个WAR文件中,比如war1.W

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

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

project-root
|-- module1
|-- module2
|-- module3
|-- module4
|-- newModule (newly added!)
|   |-- sub1
|   |-- sub2
现在让我们假设
module1
module2
需要部署在一个WAR文件中,比如
war1.WAR
module3
module4
在不同的WAR文件中,比如
war2.WAR
最后
newModule:sub1
newModule:sub2
将作为两个独立的应用程序部署

现在我正在讨论如何创建这些工件。我是否应该为每个工件单独增加一个war模块,即一个用于
war1
,另一个用于
war2
?或者我应该在根项目中有两个任务?如果是这样,我如何使用war插件来生成许多不同的工件?或者我应该选择一个模块作为这两个工件的主机,即have
module1
build
war1
module3
build
war2
之类的?或者最后,我应该将项目(我正试图避免这样做)重新组织成这样:

project-root
|-- war1
|   |-- module1
|   |-- module2
|-- war2
|   |-- module3
|   |-- module4
|-- newModule
|   |-- sub1
|   |-- sub2
我建议你:

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的容器,我建议您使用这些设置。你是怎么看的?

这是我经过一段时间思考后提出的解决方案。我认为它会起作用的。它会起作用的,是一个好的、灵活的解决方案。将现有项目作为宿主也很好,如果对于每个War,一个项目显然与该War关联(例如,包含所有JSP),并且没有在不同上下文中重用的可能性,那么这是一个自然的解决方案。重新组织目录结构没有任何好处。例如,即使是平面结构,Gradle也足够聪明,可以根据需要自动重建相关项目。总之,遗留结构似乎一点也不坏。