我如何构建一个依赖于另一个的 Gradle 项目,但将本地路径置于版本控制之外?

How can I build a Gradle project that depends on another, but keep local paths out of version control?

我正在组织我的两个 Java 项目。两者都使用 Git 进行版本控制。为了构建它们,我正在从调用 javac 的简单 shell 脚本迁移到 Gradle。 Project C 依赖于 Project L,Project C 的 build.gradle 如何从 Project L 中找到它需要的东西?我想避免检查我计算机本地的版本控制路径。我觉得我一定缺少比其中一个更好的解决方案:

对此有什么好的解决方案?

将项目 L 设置为项目 C 下 Git 的子模块。然后让项目 C 将项目 L 视为 library/precompiled 库。这里的一个注意事项是确保您永远不会修改子模块中的代码!如果您需要更改它,请确保您在它的单独项目中这样做。不这样做会让你头疼。

Gradle 可以使用您本地的 Maven 存储库。它甚至使用与 Maven 相同的机制来确定 .m2 文件夹的位置。

If a local repository location is defined in a settings.xml, this location will be used. The settings.xml in USER_HOME/.m2 takes precedence over the settings.xml in M2_HOME/conf. If no settings.xml is available, Gradle uses the default location USER_HOME/.m2/repository.

只要将 ProjectL 工件发布到本地 maven,就可以从 ProjectC 的存储库中使用它们,而无需使用本地路径。只需确保在 C 之前构建和发布 L。有关发布到 maven 存储库的更多详细信息 see here.

本地maven repo可以在gradle中定义为:

repositories {
  mavenLocal()
}