Maven 具有不同子模块的包2 WARs

Maven 具有不同子模块的包2 WARs,maven,Maven,我想打包两个WAR,其中包含相互排斥的低级实现。我尝试过各种各样的方法,我有种唠叨的感觉,我错过了显而易见的东西 我的项目结构以子模块的形式构建: app foo foo-highlevel foo-lowlevel1 foo-lowlevel2 bar webapp WAR 1的依赖项应为: webapp \-foo-highlevel \-foo-lowlevel1 \-bar \-foo-highlevel 因此,对于第二次战争: webap

我想打包两个WAR,其中包含相互排斥的低级实现。我尝试过各种各样的方法,我有种唠叨的感觉,我错过了显而易见的东西

我的项目结构以子模块的形式构建:

app
  foo
    foo-highlevel
    foo-lowlevel1
    foo-lowlevel2
  bar
  webapp
WAR 1的依赖项应为:

webapp
\-foo-highlevel
  \-foo-lowlevel1
\-bar
  \-foo-highlevel
因此,对于第二次战争:

webapp
\-foo-highlevel
  \-foo-lowlevel2
\-bar
  \-foo-highlevel
就是我想,

  • 隐藏foo的高级实现需要哪个低级实现
  • 只打包一个低级实现。(注意:低级实现包括Springbean,它被注入到foo highlevel中)
我怎样才能实现将两场战争相应地打包

我确实尝试过:

  • 配置文件:但它们并不意味着要为同一POM创建不同的工件,而且无论如何都不起作用
  • 多个POM:我可以为Web应用程序定义两个POM,分别依赖于lowlevel1或lowlevel2。但是到目前为止,在webapp的POM中对foo highlevel的依赖已经足够了,所以我想知道这是否真的是决定低级别依赖的正确地方
<>我考虑尝试:

  • 使用maven的汇编插件:但这是适合这项工作的工具吗
  • 使用战争覆盖:也许这是正确的工具

感谢您的想法

Maven的经验法则是“每个pom一个工件”,因此我认为您的“多个pom”方法是可行的。您可以将webapp保留为定义基本依赖项的父聚合器项目,然后使用2个pom构建从顶级pom继承的
war
s,只需指定低级依赖项即可。

谢谢。我在一个聚合webapp pom中重构了webapp,该聚合webapp pom包含webapp-lowlevel1和webapp-lowlevel2,以及webapp common(用于web.xml和共享源代码)。