【问题标题】:When should I use multi module maven project?我什么时候应该使用多模块 Maven 项目?
【发布时间】:2014-11-28 15:05:46
【问题描述】:

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

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

  • 声纳亚军 - API
  • 声纳转轮 - 批次
  • Sonar Runner - 分布
  • Sonar Runner - 实现

它们分别有:17、2、8 和 13 个 java 文件。

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

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

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

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

我试图在 Google 中找到答案,但没有成功。

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

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

还有其他好处吗?

【问题讨论】:

    标签: maven


    【解决方案1】:

    我几乎总是在做多模块的 Maven 项目——即使我只是在做一些开源实验。

    做多模块项目的原因有很多:

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

    可能还有更多。

    这些原因很多,所以多年来我更喜欢从一开始就从父/子设置开始。我不记得我参与的单个项目,它会保持单模块。

    如果有原因的话,即使将 2 个文件的项目拆分为 2 个模块对我来说也不是可笑的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 2012-09-22
      • 1970-01-01
      • 2019-02-16
      • 2012-12-23
      • 2021-07-13
      相关资源
      最近更新 更多