web-dev-qa-db-fra.com

Est-il possible de déclarer le référentiel git en tant que dépendance dans Android gradle?

Je veux utiliser la version master de ma lib de mavencentral.

Est-il possible de déclarer le référentiel git en tant que dépendance dans Android gradle?

96
Alexey Zakharov

Pour moi le meilleur moyen est:

https://jitpack.io

Étape 1. Ajoutez le référentiel JitPack à build.gradle à la fin des référentiels:

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

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

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

Il est possible de construire la dernière validation sur la branche master, par exemple:

dependencies {
    compile 'com.github.jitpack:gradle-simple:master-SNAPSHOT'
}
128
sunnyday

Ou vous pouvez enregistrer un référentiel en tant que sous-module comme celui-ci

$ 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 racine et tous ses sous-modules.

git clone --recursive my_sub_project_git_url

J'espère que ça aide.

34
trupin

Je ne pense pas que Gradle soit en faveur d’ajouter un dépôt Git en tant que dépendance. Ma solution consiste à:

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

Je suppose que vous voulez que le référentiel de bibliothèque se trouve en dehors du dossier du référentiel de projet principal, de sorte que chaque projet sera un référentiel indépendant git, et vous pouvez effectuer des validations de manière indépendante.

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

Vous pourriez:

Dans le fichier settings.gradle de niveau supérieur, déclarez le référentiel de la bibliothèque en tant que projet, compte tenu de 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 référentiel 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')
}
6
GaRRaPeTa

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 Android continue d'essayer de tirer de maven même après que les dépôts git soient chargés.

5
sgarman

Il y a maintenant une nouvelle fonctionnalité dans gradle qui vous permet d'ajouter des dépendances de sources depuis git.

Vous devez d’abord définir le dépôt dans le settings.gradle fichier et le mapper à un identificateur de module:

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

Et maintenant dans votre build.gradle vous pouvez indiquer 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:

  • Grade 4.10 ou plus requis
  • Ne supporte pas encore l'authentification

Références:

1
Mister Smith