包2具有不同子模块的WAR

时间:2013-11-28 16:17:38

标签: maven

我想打包两个WAR,它们包含互斥的低级实现。我尝试了各种各样的方法,并且我感到唠叨的感觉,我想念显而易见的事。

我的项目结构是以子模块结构的:

app
  foo
    foo-highlevel
    foo-lowlevel1
    foo-lowlevel2
  bar
  webapp

WAR 1的依赖关系应为:

webapp
\-foo-highlevel
  \-foo-lowlevel1
\-bar
  \-foo-highlevel

因此对于WAR 2:

webapp
\-foo-highlevel
  \-foo-lowlevel2
\-bar
  \-foo-highlevel

也就是说,我想

  • 隐藏foo的高级实现
  • 所需的低级实现
  • 只打包一个低级实现。 (注意:低级实现包括以foo-highlevel注入的spring bean)

如何实现相应打包两个WAR?

我尝试过的方法:

  • 个人资料:但他们并不是要为同一个POM创建不同的工件,而且无论如何都无法解决
  • 多个POM:我可以为webapps定义两个POM,分别对lowlevel1或lowlevel2具有依赖性。但到目前为止,在webapp的POM中对foo-highlevel的依赖已经足够了,所以我想知道这是否真的是决定低级依赖的正确位置。

我考虑尝试的方法:

  • 使用maven的程序集插件:但这是否适合这项工作?
  • 使用战争叠加:也许这是正确的工具?

感谢您的想法

1 个答案:

答案 0 :(得分:1)

Maven的经验法则是“每pom一件神器”,所以我认为你的“多POM”方法是可行的。您可以将webapp保留为定义基本依赖项的父聚合器项目,然后使用2个poms来构建从该顶级pom继承的war,并指定低级依赖项。