Git gradle三角形依赖于另一个项目

Git gradle三角形依赖于另一个项目,git,gradle,build-dependencies,Git,Gradle,Build Dependencies,我花了很多时间来解决我的问题,因为我认为这是一个非常常见的项目结构,但找不到任何合适的解决方案 项目结构: some_local_dir_with_git_repos git_repo_of_project_A/ build.gradle git_repo_of_project_B/ build.gradle git_repo_of_project_Core/ 项目A和B应包括核心资源 “some_local_dir_with_git

我花了很多时间来解决我的问题,因为我认为这是一个非常常见的项目结构,但找不到任何合适的解决方案

项目结构:

some_local_dir_with_git_repos
    git_repo_of_project_A/
         build.gradle
    git_repo_of_project_B/
         build.gradle
    git_repo_of_project_Core/
项目A和B应包括核心资源

“some_local_dir_with_git_repos”不在git下,因此我不想在其中添加任何settings.gradle

有一个优雅的解决方案吗


增加:

感谢@peter niederwieser和他提供的链接(其中包含他的答案-)

我做了设置。A和B项目的梯度如下:

include ':Core'
project(':Core').projectDir = new File('../git_repo_of_project_Core/')
并将以下行添加到build.gradle:

dependencies {
    compile project(':Core')
}

在“文件->无效缓存/重新启动”(解决Android Studio中的“无法解决符号”问题)和“构建->重建项目”(解决ClassNotFoundException问题)之后,对我来说效果很好。

一个很好的指导方针是一起构建一起版本化的内容。因此,如果您有三个Git存储库,您将有三个构建,它们将通过二进制存储库(例如Artifactory或Nexus)交换工件


如果您必须有一个跨越多个Git存储库的构建,有些选项是使用Git子模块创建uber存储库,通过
--设置文件
传递
设置.gradle
的位置,或者从包含
设置.gradle
的目录运行构建。此外,您可能必须配置项目目录的位置,如所示。

将一个存储库的源包含到另一个存储库中意味着基础结构有问题。正如@peter niederwieser提到的,在二进制工件(而不是源代码)级别重用代码是正常的

通常,您会在git_repo_of_project_Core上执行“gradle build install”,在git_repo_of_project_A和git_repo_of_project_B上执行“gradle build install”。“构建”和“安装”任务的含义:

  • “构建”本质上是编译一个项目(或一组项目)。“构建”涉及到许多任务,这里有完整的参考:

  • “安装”任务将已编译的jar安装到本地maven缓存中

您可能希望自动编译/安装来自多个git存储库的多个项目。Gradle是一个完美的工具(IMHO),因为它与项目性质无关,并且可以通过插件进行扩展。两个功能对于多存储库设置特别有用:

  • GradleBuild任务,它允许gradle脚本针对指定目录或“build.gradle”文件启动另一个构建(甚至任意任务)

  • ajoberstar:gradlegit-gradle插件,它实现一组gradle任务,处理git


请看一下multiproject git gradle脚本()——它实现了用于配置multiproject gradle/git设置的强大DSL。它可以为您节省大量的时间和精力:)

谢谢您的链接,我找到了自己的答案,并用它更新了我的问题。说到将一个项目的源代码包含到另一个项目中:我只想在一个IDE中的两层上共同工作。此外,Android库项目通常有开放的源代码,并与资源和其他原始文件(其中一些也是文本格式)一起包含。