Voglio usare la versione master della mia libreria da mavencentral.
È possibile dichiarare il repository git come dipendenza in Android Gradle?
Voglio usare la versione master della mia libreria da mavencentral.
È possibile dichiarare il repository git come dipendenza in Android Gradle?
Risposte:
Per me il modo migliore è:
Passaggio 1. Aggiungi il repository JitPack a build.gradle alla fine dei repository:
repositories {
// ...
maven { url "https://jitpack.io" }
}
Passaggio 2. Aggiungere la dipendenza nel modulo
dependencies {
compile 'com.github.User:Repo:Tag'
}
È possibile creare l'ultimo commit sul ramo master, ad esempio:
dependencies {
compile 'com.github.jitpack:gradle-simple:master-SNAPSHOT'
}
-SNAPSHOT
jitpack.io/docs/#snapshots
buildscript
Oppure puoi registrare un repository come sottomodulo come questo
$ git submodule add my_sub_project_git_url my-sub-project
Quindi includi il progetto nel tuo file settings.gradle che dovrebbe assomigliare a questo
include ':my-app', ':my-sub-project'
Infine, compila il progetto come dipendenza nel file build.gradle dell'applicazione in questo modo
dependencies {
compile project(':my-sub-project')
}
Quindi, quando cloni il tuo progetto, dovrai solo aggiungere l'opzione --recursive
per fare in modo che git cloni automaticamente il repository di root e tutti i suoi sottomoduli.
git clone --recursive my_sub_project_git_url
Spero possa essere d'aiuto.
Ora c'è una nuova funzionalità in gradle che ti consente di aggiungere dipendenze di origine da git.
Devi prima definire il repository nel settings.gradle
file e mapparlo a un identificatore di modulo:
sourceControl {
gitRepository("https://github.com/gradle/native-samples-cpp-library.git") {
producesModule("org.gradle.cpp-samples:utilities")
}
}
E ora nel tuo build.gradle
puoi puntare a un tag specifico (ad esempio: 'v1.0'):
dependencies {
...
implementation 'org.gradle.cpp-samples:utilities:v1.0'
}
O a un ramo specifico:
dependencies {
...
implementation('org.gradle.cpp-samples:utilities') {
version {
branch = 'release'
}
}
}
Avvertenze:
Riferimenti:
Non credo che Gradle supporti l'aggiunta di un repository git come dipendenza. La mia soluzione alternativa è:
Presumo che tu voglia il repository della libreria fuori dalla cartella del repository del progetto principale, quindi ogni progetto sarà repository git indipendente e puoi eseguire commit nella libreria e nei repository git del progetto principale in modo indipendente.
Supponendo che tu voglia avere la cartella del progetto libreria nella stessa cartella della cartella del progetto principale,
Potresti:
In settings.gradle di primo livello, dichiara il repository della libreria come un progetto, data la sua posizione nel filesystem
// 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' )
Usa il plugin gradle-git per clonare la libreria dal repository 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
}
Nelle dipendenze del tuo progetto, dì che il codice del tuo progetto dipende dalla cartella del progetto git
dependencies {
compile project(':lib_project')
}
La cosa più vicina che ho trovato è https://github.com/bat-cha/gradle-plugin-git-dependencies ma non riesco a farlo funzionare con il plug-in Android, continua a provare a estrarre da Maven anche dopo git i repository vengono caricati.