Maven多模块的功能,但共享webapp

时间:2013-08-08 09:42:30

标签: maven java-ee architecture pom.xml modularity

我正在构建一个由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)。

enter image description here

我的问题是如何将webapp分成不同的模块但可以作为一个网站运行? (每个业务子系统都有单独的webapp / html / jsp / js / css,但可以在运行时合并为一个网站)

1 个答案:

答案 0 :(得分:1)

考虑到这一点,我给你的最好建议是:单独部署一个单独的团队。如果这些子系统确实需要彼此独立,并且可以独立发布,那么将它们一起部署在一起就没有任何意义。

如果由于系统要求而无法做到这一点,那么在架构方面最好的解决方案是将前端层合并到一个WAR组件中,这取决于不同的业务子系统(域) ,dao和服务)。团队需要共享此组件,但可以将他们的工作分开,例如不同的文件夹或包。

说到这里,咨询的生活往往并不那么容易,逻辑解决方案就是这样。所以这是我更实际的答案:

在主POM文件中,使用assembly-plugin创建所有项目的停留战争。要降低程序集的复杂性,可以将domain,dao和service POM包含为简单依赖项。