我们的SOA层有12个ear文件,我们将这些EAR单独部署到JBoss。我们越来越难以管理依赖关系以及所有这些EAR文件的部署。
每个EAR都是:
理想情况下,我们可以使用单个EAR(或其他格式),我们可以一起进行版本和认证。我已经尝试将模块添加到父pom中,但这有助于同时构建所有单个EAR。
有没有办法以某种方式组合这些EAR文件?
如果答案是否定的,那么我们的架构是否“做错了”的任何想法?我们应该合并项目吗?以其他方式解决API依赖问题?
答案 0 :(得分:1)
对我来说,听起来你应该选择带有多个网络模块的单耳。请参阅官方文档:http://maven.apache.org/plugins/maven-ear-plugin/modules.html
由于您仍然使用SOA,因此Web服务可以通过定义的任何接口相互通信,只需简化部署即可。
您的项目pom.xml
可能如下所示:
WebModuleA 与pom.xml
类似:
<groupId>???</groupId>
<artifactId>webModuleA</artifactId>
<version>???</version>
<type>war</type>
<dependencies>
<dependency>
<groupId>???</groupId>
<artifactId>payment-service</artifactId>
<version>1.1.9</version>
<type>jar</type>
</dependency>
...
webModuleB 与pom.xml
类似:
<groupId>???</groupId>
<artifactId>webModuleB</artifactId>
<version>???</version>
<type>war</type>
<dependencies>
<dependency>
<groupId>???</groupId>
<artifactId>payment-service</artifactId>
<version>1.1.9</version>
<type>jar</type>
</dependency>
...
付款服务与pom.xml
类似:
<groupId>???</groupId>
<artifactId>payment-service</artifactId>
<version>1.1.9</version>
<type>jar</type>
...
最后,包含所有网络模块的 earModule :
<groupId>???</groupId>
<artifactId>earModule</artifactId>
<version>???</version>
<type>ear</type>
<dependencies>
<dependency>
<groupId>???</groupId>
<artifactId>webModuleA</artifactId>
<version>???</version>
<type>war</type>
</dependency>
<dependency>
<groupId>???</groupId>
<artifactId>webModuleB</artifactId>
<version>???</version>
<type>war</type>
</dependency>
...
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.8</version>
<configuration>
<modules>
<webModule>
<groupId>???</groupId>
<artifactId>webModuleA</artifactId>
</webModule>
<webModule>
<groupId>???</groupId>
<artifactId>webModuleA</artifactId>
</webModule>
...
</modules>
</configuration>
</plugin>
基本上应该是这样。
此外,如果您想阻止在每个war
webModuleX中打包付款服务(以减少最终耳朵档案的大小),请确保选择所谓的“瘦战”:{{ 3}}
如果某些建议不清楚或不准确,请随时详细询问。