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

时间:2014-11-28 15:05:46

标签: maven

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

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

  • Sonar Runner - API
  • Sonar Runner - Batch
  • Sonar Runner - 发行
  • Sonar Runner - 实施

他们分别有:17个,2个,8个和13个java文件。

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

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

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

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

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

编辑:我找到了这个:Is there any benefit in using Maven Multimodule when working in a small application?

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

还有其他好处吗?

1 个答案:

答案 0 :(得分:6)

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

进行多模块项目有很多理由:

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

可能还有更多。

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

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