Java 中类似 Lerna 的工具/处理 monorepos

Lerna-like tools / handling monorepos in Java

我有网络开发背景,经常从事使用 Lerna 处理 JavaScript 中同一存储库中的多个包的项目。就目前而言,我需要在 Java 中重新创建其中一些项目,并且需要知道如何在不使用 Lerna 的情况下使用 Gradle 作为我们的构建工具。

我的问题是关于如何在 Java 中处理包含多个包的大型存储库:

编辑: 改写问题以符合指南。删除下面的旧问题,这样旧的答案更有意义。

  1. 我是否需要使用单独的工具来帮助管理 Java 中的包,就像 Lerna 对 JavaScript 所做的那样,或者像 Maven 或 Gradle 这样的构建工具可以处理这个问题靠自己。
  2. 如果两个团队使用不同的构建工具,是否更容易为他们的不同贡献带来问题?
  3. 首先在一个存储库中维护多个 Java 包是否可行?


  1. 在 Java 中是否有任何软件包或插件已经这样做了? (我找不到。)
  2. 解决方案是否可能会在使用不同构建工具进行不同贡献的团队之间引起问题? (例如:Maven 和 Gradle)
  3. 首先在一个存储库中维护多个 Java 包是否可行?
  4. 在问这个问题时,有什么我根本无法理解的吗?我是不是走错了方向寻找解决方案?

目前,Java 项目管理的实际标准似乎是 gradle 和 maven(通过 gradle 插件)的组合。

这两者的结合消除了对 Lerna 等工具的需求,因为它们允许开箱即用地配置本地依赖项。

设置 multi-project build 后,您可以像这样添加兄弟项目作为依赖项:

dependencies {
    compile project(':sibling')
}

如果您使用 IDE 例如支持 gradle 的 Intellij IDEA,它会在您创建 gradle 项目时为您创建初始目录结构,并配置您通过 UI 创建的新模块。稍微玩一下这个可能是个好主意,以便了解它是如何连接的。

Java 很好地处理了语言级别的包。我不明白这个问题。您可以创建不同的 packages/modules/etc。在任何项目中。对于具有依赖项的构建管理,请使用 Maven 或 Gradle.