我如何构建一个依赖于另一个的 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 中找到它需要的东西?我想避免检查我计算机本地的版本控制路径。我觉得我一定缺少比其中一个更好的解决方案:
- 在
build.gradle
中将项目L的源路径添加到项目C的源路径中:这是本地路径。
- 将项目 L 发布到本地存储库,并让项目 C 从该存储库获取依赖项: 再次指定本地路径;本地存储库的路径。
- 运行 服务器上的远程存储库: 我有一个服务器和一个域,但这似乎有点过分了。
- 在项目 C 中包含一个项目 L 的 .jar: 我正在将二进制文件检查到版本控制中,我不想这样做,或者我正在运送作为构建过程的一部分手动处理 .jar 文件。
对此有什么好的解决方案?
将项目 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()
}
我正在组织我的两个 Java 项目。两者都使用 Git 进行版本控制。为了构建它们,我正在从调用 javac
的简单 shell 脚本迁移到 Gradle。 Project C 依赖于 Project L,Project C 的 build.gradle
如何从 Project L 中找到它需要的东西?我想避免检查我计算机本地的版本控制路径。我觉得我一定缺少比其中一个更好的解决方案:
- 在
build.gradle
中将项目L的源路径添加到项目C的源路径中:这是本地路径。 - 将项目 L 发布到本地存储库,并让项目 C 从该存储库获取依赖项: 再次指定本地路径;本地存储库的路径。
- 运行 服务器上的远程存储库: 我有一个服务器和一个域,但这似乎有点过分了。
- 在项目 C 中包含一个项目 L 的 .jar: 我正在将二进制文件检查到版本控制中,我不想这样做,或者我正在运送作为构建过程的一部分手动处理 .jar 文件。
对此有什么好的解决方案?
将项目 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 inM2_HOME/conf
. If no settings.xml is available, Gradle uses the default locationUSER_HOME/.m2/repository
.
只要将 ProjectL 工件发布到本地 maven,就可以从 ProjectC 的存储库中使用它们,而无需使用本地路径。只需确保在 C 之前构建和发布 L。有关发布到 maven 存储库的更多详细信息 see here.
本地maven repo可以在gradle中定义为:
repositories {
mavenLocal()
}