Chcę użyć wersji głównej mojej biblioteki z mavencentral.
Czy można zadeklarować repozytorium git jako zależność w Android Gradle?
Chcę użyć wersji głównej mojej biblioteki z mavencentral.
Czy można zadeklarować repozytorium git jako zależność w Android Gradle?
Odpowiedzi:
Dla mnie najlepszy sposób to:
Krok 1. Dodaj repozytorium JitPack do build.gradle na końcu repozytoriów:
repositories {
// ...
maven { url "https://jitpack.io" }
}
Krok 2. Dodaj zależność w formularzu
dependencies {
compile 'com.github.User:Repo:Tag'
}
Możliwe jest zbudowanie najnowszego commita w gałęzi master, na przykład:
dependencies {
compile 'com.github.jitpack:gradle-simple:master-SNAPSHOT'
}
-SNAPSHOT
jitpack.io/docs/#snapshots
buildscript
Lub możesz zarejestrować repozytorium jako podmoduł w ten sposób
$ git submodule add my_sub_project_git_url my-sub-project
Następnie umieść projekt w swoim pliku settings.gradle, który powinien wyglądać tak
include ':my-app', ':my-sub-project'
Na koniec skompiluj projekt jako zależność w pliku build.gradle aplikacji w ten sposób
dependencies {
compile project(':my-sub-project')
}
Następnie, podczas klonowania projektu, będziesz musiał tylko dodać opcję, --recursive
aby git automatycznie klonował repozytorium główne i wszystkie jego moduły podrzędne.
git clone --recursive my_sub_project_git_url
Mam nadzieję, że to pomoże.
W gradle jest teraz nowa funkcja, która pozwala dodawać zależności źródłowe z git.
Najpierw musisz zdefiniować repozytorium w settings.gradle
pliku i zmapować je na identyfikator modułu:
sourceControl {
gitRepository("https://github.com/gradle/native-samples-cpp-library.git") {
producesModule("org.gradle.cpp-samples:utilities")
}
}
A teraz build.gradle
możesz wskazać konkretny tag (np. „V1.0”):
dependencies {
...
implementation 'org.gradle.cpp-samples:utilities:v1.0'
}
Lub do konkretnego oddziału:
dependencies {
...
implementation('org.gradle.cpp-samples:utilities') {
version {
branch = 'release'
}
}
}
Ostrzeżenia:
Bibliografia:
Myślę, że Gradle nie obsługuje dodawania repozytorium git jako zależności. Moje obejście to:
Zakładam, że chcesz, aby repozytorium biblioteki znajdowało się poza folderem głównego repozytorium projektu, więc każdy projekt będzie niezależnym repozytorium git i możesz niezależnie wprowadzać zmiany w bibliotece i repozytoriach git głównego projektu.
Zakładając, że chcesz mieć folder projektu biblioteki w tym samym folderze, co folder projektu głównego,
Mógłbyś:
W ustawieniach najwyższego poziomu.gradle, zadeklaruj repozytorium biblioteki jako projekt, biorąc pod uwagę jego lokalizację w systemie plików
// 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' )
Użyj wtyczki gradle-git, aby sklonować bibliotekę z repozytorium 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
}
W zależnościach projektu powiedz, że kod projektu zależy od folderu projektu git
dependencies {
compile project(':lib_project')
}
Najbliższą rzeczą, jaką znalazłem, jest https://github.com/bat-cha/gradle-plugin-git-dependencies, ale nie mogę zmusić go do pracy z wtyczką Androida, wciąż próbuję wyciągnąć z mavena nawet po git repozytoria są ładowane.