是否可以将 git 存储库声明为 android gradle 中的依赖项?

我想使用来自 mavencentral 的 lib 的主版本。

是否可以将 git 存储库声明为 android gradle 中的依赖项?

78254 次浏览

我找到的最接近的东西是 https://github.com/bat-cha/gradle-plugin-git-dependencies,但我不能让它与安卓插件工作,一直试图从 Maven 即使在 git 回购加载。

我不认为 Gradle 支持将 git 存储库作为一个依赖项来添加。 我的解决办法是:

  • 声明主项目依赖于文件系统中的另一个项目
  • 提供一种方法来自动克隆 git repo 在声明为依赖项的文件夹中

我假设您希望库回购在主项目回购的文件夹之外,因此每个项目将是独立的 git 回购,并且您可以独立地提交到库和主项目 git 存储库。

假设您希望将图书馆项目的文件夹与主项目的文件夹放在同一个文件夹中,

你可以:

在顶层 setings.gradle 中,根据库在文件系统中的位置,将库存储库声明为一个项目

// Reference:  https://looksok.wordpress.com/2014/07/12/compile-gradle-project-with-another-project-as-a-dependency/


include ':lib_project'
project( ':lib_project' ).projectDir = new File(settingsDir, '../library' )

使用 Gradle-git 插件从 git 存储库克隆库

    import org.ajoberstar.gradle.git.tasks.*


buildscript {
repositories { mavenCentral() }
dependencies { classpath 'org.ajoberstar:gradle-git:0.2.3' }
}


task cloneLibraryGitRepo(type: GitClone) {
def destination = file("../library")
uri = "https://github.com/blabla/library.git"
destinationPath = destination
bare = false
enabled = !destination.exists() //to clone only once
}

在项目的依赖项中,假设项目的代码取决于 git 项目的文件夹

dependencies {
compile project(':lib_project')
}

或者您可以将存储库注册为子模块,如下所示:

git submodule add my_sub_project_git_url my-sub-project

然后将项目包含在 settings.gradle文件中,例如:

include ':my-app', ':my-sub-project'

注意 上面的 my-appmy-sub-project都是文件夹名称,并且文件夹需要包含 build.gradle文件。
子文件夹支持“ :”(而不是 /) ,比如:

include ':my-app'
include ':my-folder:my-sub-project'

最后,compile项目作为应用程序 build.gradle文件中的依赖项,比如:

buildscript {
// ... Not here ...
}
    

// ...
    

dependencies {
api project(':my-sub-project')


// Or for older Gradle versions:
// ```
// compile project(':my-sub-project')
// ```
}

但如果你正在整理文件:

api project(':my-folder:my-sub-project')

此外,在克隆项目时,您只需添加选项 --recursive,就可以使 git 自动克隆根存储库及其所有子模块。

git clone --recursive my_sub_project_git_url

希望能有所帮助。

对我来说,最好的办法是:

Https://jitpack.io

步骤1. 将 JitPack 存储库添加到存储库末尾的 build.gradle:

repositories {
// ...
maven { url "https://jitpack.io" }
}

步骤2。在表单中添加依赖项

dependencies {
implementation 'com.github.User:Repo:Tag'
}

可以在主分支上构建最新的提交,例如:

dependencies {
implementation 'com.github.jitpack:gradle-simple:master-SNAPSHOT'
}

现在,gradle 中有了一个新特性,允许您从 git 添加源依赖项。

您首先需要在 settings.gradle文件中定义回购,并将其映射到模块标识符:

sourceControl {
gitRepository("https://github.com/gradle/native-samples-cpp-library.git") {
producesModule("org.gradle.cpp-samples:utilities")
}
}

如果你使用考特林梯度,你将需要使用 URI("https://github.com/gradle/native-samples-cpp-library.git")而不是 "https://github.com/gradle/native-samples-cpp-library.git"

现在,在 build.gradle中,你可以指向一个特定的标记(例如: ‘ v1.0’) :

dependencies {
...
    

implementation 'org.gradle.cpp-samples:utilities:v1.0'
}

或者某个特定的分支:

dependencies {
...
    

implementation('org.gradle.cpp-samples:utilities') {
version {
branch = 'release'
}
}
}

警告:

  • 要求达到4.10或以上级别
  • 还不支持身份验证

参考文献:

这位 Smith 先生的 回答几乎对我起作用了,唯一的区别是,它需要的是 URI,而不是将存储库 URI 作为 String传递,比如:

sourceControl {
gitRepository(new URI("https://github.com/gradle/native-samples-cpp-library.git")) {
producesModule("org.gradle.cpp-samples:utilities")
}
}

我用的是6.8级。