【问题标题】:Maven multi-modules by features but sharing webappMaven 多模块按功能但共享 webapp
【发布时间】:2013-08-09 23:20:28
【问题描述】:

我正在通过 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,但可以在运行时合并为一个网站)

【问题讨论】:

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


    【解决方案1】:

    考虑到这一点,我给您的最佳建议是:单独部署单独团队构建的内容。如果这些子系统真的需要相互独立,并且可以独立发布,那么一次性将它们部署在一起是没有意义的。

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

    话虽如此,但咨询行业的生活通常并不容易,因为这样的逻辑解决方案是可能的。所以这是我更接地气的答案:

    在主 POM 文件中,使用assembly-plugin 创建所有项目的中转战。为了降低程序集的复杂性,您可以将域、dao 和服务 POM 包含为简单的依赖项。

    【讨论】:

    • 谢谢。如果我们将前端层合并到一个war组件中,假设团队1正在开发没有前端的subsystem1,那么团队如何独立部署subsystem1呢?使用 sub-system1 的 pom.xml 构建一个 jar?还是需要重新打包前端战?
    • 重点是需要共享 WAR,因此您必须一起部署您的工作。所以每个人都将使用相同的 WAR 文件来测试他们的(后端)工作,只是我希望您的团队将开发和测试不同的功能。是的,可能会发生一些冲突,但是......如果这些冲突会发生,但无论如何它们都会发生 :-) 所以从这个角度来看,使用相同的 WAR 只是良好风险管理的一个例子。
    猜你喜欢
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多