Maven Multi Module优于简单依赖

ben*_*ico 40 dependency-management maven

我有几年的maven项目经验,即使是多模块项目(这让我讨厌 maven的多模块功能(所以免责声明现在已经完成))即使我真的很喜欢maven也有一些我无法得到的东西明确答案:

多模块maven项目的典型用例是什么?与简单的依赖关系和父pom相比,这种结构的附加价值是多少?

我已经看到了很多多模块项目的配置,但是所有这些项目都可以通过创建一个简单的依赖库结构来实现,这些结构依赖于自己的生命作为可交付成果(即使使用父pom,作为单独的可交付成果:分解依赖和配置)我没有找到任何用例,我可以清楚地看到多模块结构的附加值.

我一直发现这种结构带来了过度的复杂性而没有真正的好处:我在哪里错过了什么?(说实话,我可以得到一些ear可以受益于这种结构,但除了特定的用例,任何其他真正的用途和好处?)

dig*_*oel 29

这是一个真实的生活案例.

我有一个多模块项目(并且你的咆哮...我没有看到它的任何复杂性.)最终结果是一个webapp但我有api,impl和webapp的不同模块.

创建项目12个月后,我发现我必须使用从jar运行的独立进程与Amazon S3集成.我添加了一个依赖于api/impl的新模块,并为新模块中的集成编写了我的代码.我使用程序集插件(或类似的东西)来创建一个可运行的jar,现在我可以在tomcat中部署一个战争,我可以在另一个服务器上部署一个进程.我的S3集成过程中没有Web类,我的webapp中没有Amazon依赖项,但我可以在api和impl中共享所有内容.

3个月后,我们决定创建一个REST webapp.我们希望将其作为单独的应用程序,而不仅仅是现有Web应用程序中的新URL映射.简单.另外一个模块,另一个webapp作为maven构建的结果创建,没有特别的修补.webapp和rest-webapp之间可以轻松共享业务逻辑,我可以根据需要进行部署.

  • 我知道这已经很老了,但是我想知道在webapp中包含api / impl有什么好处?我想这对我来说是一个更深层的问题-我看到也许impl应该使用API​​进行模块化,但是为什么像webapp和其他API使用者这样的东西呢? (3认同)

ben*_*n75 16

多模块的主要好处是

  • 一个maven命令一次构建所有模块.
  • 最重要的是:maven为您处理构建订单.
  • 配置CI服务器也非常简单:构建一切的单个jenkins工作.

我已经在一个有大约30个子模块的项目中工作过.有时,您需要更改模块以外的内容,运行单个命令并确保需要编译的所有内容都以正确的顺序编译是必须的.

编辑

为什么30个子模块?

巨大的框架,很多功能,很多开发人员,模块基础上的功能分离.这是一个真实的用例,将代码分离到模块中真的很有意义.


Aug*_*sto 5

我认为您是正确的,大多数使用多模块的项目实际上并不需要它们。

在我工作的地方,我们使用多模块项目(我认为这是有充分理由的)。我们有类似面向服务的架构,所以每个应用程序

  • 客户端模块
  • 接口模块(在客户端和实现之间具有共享对象)
  • 一个实施模块
  • 战争模块

我同意将该实现和 war 模块放在同一个实际模块中是可以的,但(可以说)这样做的好处是,解决问题的类之间以及应用程序如何与外部世界通信的方式之间有非常清晰的划分。

在以前仅涉及 Web 应用程序的项目中,我尝试将所有内容都放在同一个模块中,因为考虑到我正在使用的模块,这使测试变得更容易。