Я хочу использовать основную версию моей библиотеки от mavencentral.
Можно ли объявить репозиторий git зависимостью в Android Gradle?
Я хочу использовать основную версию моей библиотеки от mavencentral.
Можно ли объявить репозиторий git зависимостью в Android Gradle?
Для меня лучший способ:
Шаг 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'
}
-SNAPSHOT
jitpack.io/docs/#snapshots
- person Andrejs; 21.09.2015
buildscript
- person Sergei Ledvanov; 07.08.2017
-SNAPSHOT
в конце. В противном случае будет выдана ошибка, не найденная.
- person hcabral; 07.03.2019
Или вы можете зарегистрировать репозиторий как подмодуль, подобный этому
$ git submodule add my_sub_project_git_url my-sub-project
Затем включите проект в свой файл settings.gradle, который должен выглядеть так:
include ':my-app', ':my-sub-project'
Наконец, скомпилируйте проект как зависимость в файле build.gradle вашего приложения, как это
dependencies {
compile project(':my-sub-project')
}
Затем при клонировании проекта вам нужно будет только добавить параметр --recursive
, чтобы git автоматически клонировал корневой репозиторий и все его подмодули.
git clone --recursive my_sub_project_git_url
Я надеюсь, что это помогает.
Теперь в gradle появилась новая функция, которая позволяет добавлять исходные зависимости из git.
Сначала вам нужно определить репо в файле settings.gradle
и сопоставить его с идентификатором модуля:
sourceControl {
gitRepository("https://github.com/gradle/native-samples-cpp-library.git") {
producesModule("org.gradle.cpp-samples:utilities")
}
}
И теперь в вашем build.gradle
вы можете указать на конкретный тег (например: 'v1.0'):
dependencies {
...
implementation 'org.gradle.cpp-samples:utilities:v1.0'
}
Или в конкретную ветку:
dependencies {
...
implementation('org.gradle.cpp-samples:utilities') {
version {
branch = 'release'
}
}
}
Предостережения:
Ссылки:
Я не думаю, что Gradle поддерживает добавление репозитория git в качестве зависимости. Мое решение:
Я предполагаю, что вам нужно, чтобы репозиторий библиотеки находился за пределами папки основного репозитория проекта, поэтому каждый проект будет независимым репозиторием git, и вы можете делать коммиты в репозитории git библиотеки и основного проекта независимо.
Предполагая, что вы хотите, чтобы папка проекта библиотеки находилась в той же папке, что и папка основного проекта,
Ты мог бы:
В файле settings.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')
}
Самое близкое, что я нашел, - это https://github.com/bat-cha/gradle-plugin-git-dependencies, но я не могу заставить его работать с подключаемым модулем Android, продолжает пытаться вытащить из maven даже после загрузки репозиториев git.
ответ @Mister Smith почти сработал для меня, единственная разница заключалась в том, что вместо передачи URI репозитория как String
ему нужно было быть URI
, то есть:
sourceControl {
gitRepository(new URI("https://github.com/gradle/native-samples-cpp-library.git")) {
producesModule("org.gradle.cpp-samples:utilities")
}
}
Я использую Gradle 6.8.