如何构建依赖于另一个的Gradle项目,但保持本地路径不受版本控制?

时间:2016-02-03 18:33:17

标签: java git gradle dependencies build.gradle

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

  • 将Project的源路径添加到项目C的build.gradle 源路径中,这是一条本地路径。
  • 将项目L发布到本地存储库,让Project C从此存储库中获取依赖项:再次指定本地路径;本地存储库的路径。
  • 在服务器上运行远程存储库:我有一个服务器和一个域,但这看起来有点矫枉过正。
  • 在项目C中包含项目L的.jar:或者我正在检查二进制文件到版本控制,我不想这样做,或者我正在运送.jar文件手动作为构建过程的一部分。

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

2 个答案:

答案 0 :(得分:1)

在项目C下使用Git将项目L设置为子模块。然后让Project C将项目L视为库/预编译库。这里需要注意的是确保永远不要修改子模块中的代码!如果您需要更改它,请确保在其单独的项目中进行更改。否则可以而且会让你头疼。

答案 1 :(得分:1)

Gradle可以使用您当地的maven回购。它甚至使用与Maven相同的机制来确定.m2文件夹的位置。

  

如果在settings.xml中定义了本地存储库位置,则将使用此位置。 USER_HOME/.m2中的settings.xml优先于M2_HOME/conf中的settings.xml。如果没有可用的settings.xml,Gradle将使用默认位置USER_HOME/.m2/repository

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

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

repositories {
  mavenLocal()
}