148 votes

Est-il possible de déclarer le dépôt git comme dépendance dans Android gradle ?

Je veux utiliser la version maître de ma librairie depuis mavencentral.

Est-il possible de déclarer le dépôt git comme dépendance dans Android gradle ?

186voto

sunnyday Points 2015

Pour moi, le meilleur moyen est :

https://jitpack.io

Étape 1. Ajoutez le dépôt JitPack à build.gradle à la fin de repositories :

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

Étape 2. Ajoutez la dépendance dans le formulaire

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

Il est possible de construire le dernier commit sur la branche master, par exemple :

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

43voto

trupin Points 722

Ou vous pouvez enregistrer un référentiel comme un sous-module comme ceci

$ git submodule add my_sub_project_git_url my-sub-project

Ensuite, incluez le projet dans votre fichier settings.gradle qui devrait ressembler à ceci

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

Enfin, compilez le projet en tant que dépendance dans le fichier build.gradle de votre application comme ceci

dependencies {
  compile project(':my-sub-project')
}

Ensuite, lors du clonage de votre projet, il vous suffira d'ajouter l'option --recursive pour que git clone automatiquement le dépôt Root, et tous ses sous-modules.

git clone --recursive my_sub_project_git_url

J'espère que cela vous aidera.

37voto

Mister Smith Points 8587

Il existe désormais une nouvelle fonctionnalité dans gradle qui vous permet d'ajouter des dépendances de source à partir de git.

Vous devez d'abord définir le repo dans le fichier settings.gradle et le faire correspondre à un identifiant de module :

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

Vous devrez utiliser URI("https://github.com/gradle/native-samples-cpp-library.git") au lieu de "https://github.com/gradle/native-samples-cpp-library.git" si vous utilisez Kotlin gradle.

Et maintenant, dans votre build.gradle vous pouvez pointer vers une balise spécifique (par exemple : 'v1.0') :

dependencies {
    ...

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

Ou à une branche spécifique :

dependencies {
    ...

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

Mises en garde :

  • Gradle 4.10 ou supérieur requis
  • Ne supporte pas encore l'authentification

Références :

6voto

GaRRaPeTa Points 927

Je ne pense pas que Gradle supporte l'ajout d'un dépôt git comme dépendance. Ma solution de contournement est la suivante :

  • déclarer que le projet principal dépend d'un autre projet dans le système de fichiers
  • fournir un moyen de cloner automatiquement le repo git dans le dossier déclaré comme une dépendance

Je suppose que vous voulez que le dépôt de la bibliothèque soit en dehors du dossier du dépôt du projet principal, ainsi chaque projet sera un dépôt git indépendant, et vous pourrez faire des commits dans les dépôts git de la bibliothèque et du projet principal indépendamment.

En supposant que vous voulez avoir le dossier du projet de bibliothèque dans le même dossier que le dossier du projet principal,

Tu pourrais :

Dans le fichier settings.gradle de premier niveau, déclarez le dépôt de bibliothèques comme un projet, en indiquant son emplacement dans le système de fichiers.

// 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' )

Utilisez le plugin gradle-git pour cloner la bibliothèque à partir du dépôt 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
        }

Dans les dépendances de votre projet, dites que le code de votre projet dépend du dossier du projet git

dependencies {
    compile project(':lib_project')
}

5voto

sgarman Points 3174

La chose la plus proche que j'ai trouvée est https://github.com/bat-cha/gradle-plugin-git-dependencies mais je n'arrive pas à le faire fonctionner avec le plugin Android, il continue à essayer de tirer de maven même après que les dépôts git soient chargés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X