我正在构建一个由Maven构建的多模块J2EE Web应用程序。 Web业务应用程序包含多个子系统/模块。为了获得高模块性,易于分布式团队开发,简单的代码导航,易于部署和升级,我们按功能分层Web业务应用系统,然后逐层分离。这是maven层次结构:
|--business-sub-system-1
| --domain
| --pom.xml
| --dao
| --pom.xml
| --service
| --pom.xml
| --webapp(presentation)
| --pom.xml
|--pom.xml
|
|--business-sub-system-2
| --domain
| --pom.xml
| --dao
| --pom.xml
| --service
| --pom.xml
| --webapp(presentation)
| --pom.xml
|--pom.xml
|
|--business-sub-system-3
| ...
|--business-sub-system-4
|...
|--business-sub-system-5
|...
|...
|pom.xml
但我们必须共享webapp,因为整个项目将被视为一个Web项目(一个web.xml)。
我的问题是如何将webapp分成不同的模块但可以作为一个网站运行? (每个业务子系统都有单独的webapp / html / jsp / js / css,但可以在运行时合并为一个网站)
答案 0 :(得分:1)
考虑到这一点,我给你的最好建议是:单独部署一个单独的团队。如果这些子系统确实需要彼此独立,并且可以独立发布,那么将它们一起部署在一起就没有任何意义。
如果由于系统要求而无法做到这一点,那么在架构方面最好的解决方案是将前端层合并到一个WAR组件中,这取决于不同的业务子系统(域) ,dao和服务)。团队需要共享此组件,但可以将他们的工作分开,例如不同的文件夹或包。
说到这里,咨询的生活往往并不那么容易,逻辑解决方案就是这样。所以这是我更实际的答案:
在主POM文件中,使用assembly-plugin创建所有项目的停留战争。要降低程序集的复杂性,可以将domain,dao和service POM包含为简单依赖项。