我什么时候应该使用多模块maven项目?

zim*_*imi 7 maven

我是Maven的新手.也许这就是这个问题的原因:)

今天我尝试下载名为Sonar Runner的项目,看看它是如何工作的.这对我来说非常奇怪,因为这个项目有4个子模块:

  • Sonar Runner - API
  • Sonar Runner - 批量
  • Sonar Runner - 发行
  • Sonar Runner - 实施

它们分别具有:17个,2个,8个和13个java文件.

这让我想知道为什么它如此细腻.我知道你不知道他们的原因是什么.但我很好奇原因是什么.

到目前为止,我认为项目的规模是一个原因,或者是单独的团队在项目的不同部分工作.

但是当项目有40个java文件时,我猜大小不是原因.

当我使用多模块项目而不是一个大项目时,我得到了什么?

我试图在谷歌找到答案,但没有运气.

编辑:我发现了这个:在小型应用程序中使用Maven Multimodule有什么好处吗?

但仍然有项目有40个java文件.将它分成4个子模块对我来说似乎很荒谬.

还有其他好处吗?

lex*_*ore 6

我几乎总是做多模块Maven项目 - 即使我只是在攻击一些开源实验.

进行多模块项目的原因有很多:

  • 代码的不同部分与不同的环境相关.您可能希望将API和实现或编译时工具与运行时所需的东西分开.
  • 将不同的功能组件放在不同的模块中是有意义的.
  • 单独的模块可能有自己的版本路线图.例如,API可能会在很长一段时间内保持稳定,但实施将经常更新.
  • 即使您正在进行单JAR项目,您也可能需要一个单独的模块,其中包含测试工具或单独的样本/演示/测试.
  • 即使您不需要所有内容,即使使用单JAR,创建父模块pom和子jar模块通常也很有用.并将组织内容移至父级pom.
  • 如果您具有循环依赖关系,则可能需要将一个模块拆分为多个模块.如果部分A依赖于BB依赖的一部分A,您可能需要拆分AA1A2.
  • 我经常不想在一个模块中混合手动编写和生成的代码.

可能还有更多.

这些原因是如此之多,所以多年以来我一直希望从一开始就使用父/子设置.我不记得我参与的一个项目,它将保留单一模块.

如果有理由,即使在2个模块中拆分2个文件项目也不会给我带来嘲讽.