Я хочу використовувати головну версію моєї ліб-програми від mavencentral.
Чи можна оголосити сховище git як залежність в android gradle?
Я хочу використовувати головну версію моєї ліб-програми від mavencentral.
Чи можна оголосити сховище git як залежність в android gradle?
Відповіді:
Для мене найкращий спосіб:
Крок 1. Додайте сховище JitPack до build.gradle в кінці сховищ:
repositories {
// ...
maven { url "https://jitpack.io" }
}
Крок 2. Додайте залежність у форму
dependencies {
compile 'com.github.User:Repo:Tag'
}
На головній гілці можна побудувати останню комісію, наприклад:
dependencies {
compile 'com.github.jitpack:gradle-simple:master-SNAPSHOT'
}
-SNAPSHOT
jitpack.io/docs/#snapshots
buildscript
Або ви можете зареєструвати сховище як такий підмодуль
$ 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 repos, і ви можете робити зобов’язання перед бібліотекою та основними сховищами 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-dependitions, але я не можу змусити його працювати з плагіном для android, продовжує намагатися витягнути з Maven навіть після git репост завантажується.