Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven按功能划分多个模块,但共享webapp_Maven_Jakarta Ee_Architecture_Pom.xml_Modularity - Fatal编程技术网

Maven按功能划分多个模块,但共享webapp

Maven按功能划分多个模块,但共享webapp,maven,jakarta-ee,architecture,pom.xml,modularity,Maven,Jakarta Ee,Architecture,Pom.xml,Modularity,我正在用Maven构建一个多模块的J2EE web应用程序。web业务应用程序包含多个子系统/模块。为了获得高模块性、便于分布式团队开发、易于代码导航、易于部署和升级,我们将web业务应用系统按功能、然后按层进行分离。以下是maven层次结构: |--business-sub-system-1 | --domain | --pom.xml | --dao | --pom.xml | --service | --pom.xml | --w

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

考虑到这一点,我给你的最好建议是:单独部署单独团队构建的内容。如果这些子系统真的需要彼此独立,并且可以独立发布,那么将它们同时部署在一起就毫无意义了

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

话虽如此,咨询业的生活往往不是那么容易,逻辑解决方案也可能如此。下面是我更实际的答案:


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

谢谢。如果我们将前端层合并到一个war组件中,那么假设团队1正在开发没有前端的子系统1,那么团队如何独立部署子系统1?使用sub-system1的pom.xml构建jar?或者需要重新打包前端战争?关键是战争需要共享,所以你必须一起部署你的工作。所以每个人都将使用相同的WAR文件来测试他们的(后端)工作,我希望您的团队将开发和测试不同的功能。是的,可能会发生一些碰撞,但是。。。如果这些冲突会发生,但它们无论如何都会发生:-)因此从这个角度来看,使用同一场战争只是良好风险管理的一个例子。