对我来说,听起来你应该选择使用多个 Web 模块的单耳。查看官方文档: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>
...
最后是包含所有 Web 模块的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 中打包支付服务(以减少最终耳朵存档的大小),请确保进行所谓的“瘦身大战”:http ://maven.apache.org/插件/maven-ear-plugin/examples/skinny-wars.html
如果某些建议不清楚或不准确,请随时详细询问。