如何将多模块maven项目组装成一个WAR?

类似的问题在这里

我想从3个不同的maven模块部署一个结果WAR。 战争模块绝对没有冲突:

  • 第一个有Java类和一些WEB-INF /工件

  • 第二个只是API – 接口 – 必须已经存在于容器中或者产生战争的一部分(这就是我想要的)

  • 第三个是实现类,WEB-INF / artifacts(spring infrastructure,web.xml等)

第一个取决于接口和实现。 第三个取决于接口。

我有可能的选择混乱。

我是否使用Overlays?

或者我是否使用程序集插件来集成第二个类?

我使用Cargo插件吗?

或者,如果我从不同的模块指定webResources,它是否由maven-war-plugin完成? 因为这个家伙几乎和我一样,但只有2个war模块,而且他不使用汇编插件,也不使用Overlays ….

请告诉我,这怎么做得好?

这只需要一点点高级使用maven jar和war插件。

第一个有Java类和一些WEB-INF /工件

让我们说这代表了主要的战争。 您只需使用maven-war-plugin的叠加function。 最基本的方法是指定战争依赖:

 ${groupId} ${rootArtifactId}-service-impl ${version} war runtime  

告诉maven war插件将这种依赖的资产合并到主战中(我们现在在哪里)

  maven-war-plugin  WEB-INF/web.xml,**/**.class    src/main/webapp/WEB-INF true WEB-INF     

您还在第二个上包含jar类型依赖项(它将是WEB-INF/lib/的JAR)

   ${groupId} ${rootArtifactId}-service ${version} jar  

您还需要指定第三个WAR对类的依赖:

   ${groupId} ${rootArtifactId}-service-impl ${version} classes jar  

关于分类器的注意事项,这是必要的,因为你指定了同一个工件的2个依赖项…为了使它工作,你必须在第三个工件(war类型工件)中设置jar插件,关于分类器和事实你需要一个工件(war和jar)的2个包:

  org.apache.maven.plugins maven-jar-plugin    package  jar    classes  **/**.class