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库项目通常有开放的源代码,并与资源和其他原始文件(其中一些也是文本格式)一起包含。