Importer votre bibliothèque

Pour accorder l'accès à votre bibliothèque, vous devez choisir un dépôt. Cette page présente les éléments à prendre en compte pour choisir un type de dépôt et montre comment créer une publication à l'aide du plug-in de publication Maven.

Avant d'importer votre bibliothèque, assurez-vous d'avoir préparé votre bibliothèque pour sa sortie et d'avoir configuré les variantes de publication ou les outils de test nécessaires.

Choisir un type de dépôt

Les bibliothèques sont publiées sous forme de fichiers AAR. Ces fichiers contiennent du code compilé sous forme de bytecode et de bibliothèques natives, un fichier manifeste Android et des ressources. Le package lui-même ne déclare aucune identité, version ou dépendance sur d'autres bibliothèques.

Fournir des AAR via un dépôt est généralement recommandé plutôt que de distribuer l'AAR directement. Cette approche permet aux utilisateurs de mieux comprendre l'origine de la bibliothèque au lieu de devoir gérer un fichier name.aar sans les détails importants, comme la version. Lorsque vous passez à une version plus récente d'une bibliothèque, utilisez un dépôt pour vous assurer que seules les dépendances requises par la version la plus récente sont ajoutées, afin que les utilisateurs n'aient pas à mettre à jour manuellement les dépendances.

La publication de votre bibliothèque avec un dépôt offre de nombreux avantages :

  • Gradle peut automatiquement ajouter les dépendances de votre bibliothèque au graphique de dépendances.
  • Gradle peut garantir qu'une seule version de votre bibliothèque figure dans le graphique de dépendances, ce qui résout les conflits si votre bibliothèque est incluse de manière transitoire plusieurs fois avec différentes versions.
  • Le plug-in Android Gradle (AGP) permet un désucrage plus efficace (si votre bibliothèque utilise les fonctionnalités de langage Java 8 ou version supérieure), ce qui réduit les durées de compilation pour vos utilisateurs.
  • Votre bibliothèque peut utiliser la publication de variantes et inclure des fonctionnalités telles que des outils de test.

La distribution directe de l'AAR ne fournit pas à l'utilisateur d'informations concernant l'identité, la version ni les dépendances de votre bibliothèque. Lors de la publication dans un dépôt, cette opération est gérée par un fichier distinct faisant partie du mécanisme du dépôt. Pour les dépôts Maven, il s'agit du fichier POM. Par conséquent, il est fortement recommandé de publier des bibliothèques à l'aide de dépôts plutôt que de distribuer manuellement des fichiers AAR.

Types de dépôts

Il existe trois types de dépôts :

  • Les référentiels en ligne sans frais, comme Maven Central, permettent à tous les utilisateurs d'importer et de télécharger des bibliothèques.
  • Les dépôts privés, accessibles via une connexion, permettent une distribution contrôlée des bibliothèques privées.
  • Les dépôts locaux basés sur des dossiers permettent la distribution de bibliothèques par téléchargement manuel.

L'utilisation de dépôts locaux basés sur des dossiers est très semblable à l'envoi à vos utilisateurs d'un lien de téléchargement manuel de l'AAR ou à l'envoi par e-mail de l'AAR. La principale différence est que vous n'envoyez pas seulement l'AAR, mais également les informations supplémentaires sur l'identité, la version et les dépendances.

Vous distribuez un fichier ZIP du dépôt basé sur des dossiers contenant votre AAR, plus les métadonnées. Vos utilisateurs peuvent ensuite extraire le contenu de ce fichier, ajouter le contenu à leur projet et renvoyer Gradle vers celui-ci. Ils peuvent ensuite déclarer une dépendance sur la bibliothèque à l'aide des coordonnées Maven, comme si elle se trouvait dans un dépôt en ligne, et bénéficier de tous les avantages mentionnés précédemment.

Créer la publication

Effectuez la publication à l'aide du plug-in de publication Gradle Maven. Ce plug-in vous permet de déclarer des publications et des dépôts, et crée des tâches pour publier ces publications dans les dépôts. Ces publications utilisent une instance SoftwareComponent créée par le plug-in qui génère la compilation, qui peut être le plug-in Android Gradle ou le plug-in java-library.

Notez que lors de l'exécution du plug-in de publication Maven avec AGP, les composants logiciels ne sont pas créés dès l'application du plug-in. Ils sont plutôt créés lors de l'étape de rappel afterEvaluate(). Par conséquent, la publication qui sélectionne le composant logiciel doit également être configurée à l'étape afterEvaluate().

L'extrait de code suivant du fichier build.gradle au niveau du module crée une publication pour une variante donnée, générée avec singleVariant() ou multipleVariants() :

Groovy

publishing {
  publications {
    release(MavenPublication) {
      groupId = 'com.my-company'
      artifactId = 'my-library'
      version = '1.0'

      afterEvaluate {
        from components.release
      }
    }
  }
}

Kotlin

publishing {
  publications {
    register<MavenPublication>("release") {
      groupId = "com.my-company"
      artifactId = "my-library"
      version = "1.0"

      afterEvaluate {
        from(components["release"])
      }
    }
  }
}

Dans l'exemple ci-dessus, le nom du composant (components.release) est basé sur le nom donné à singleVariant() ou à multipleVariants().

Une fois que vous avez déclaré une publication, vous devez créer un dépôt cible.

Effectuer la publication dans un dépôt local

La publication dans un dépôt local est très semblable à la publication dans un dépôt distant, à l'exception de la déclaration du dépôt. Lisez la section précédente pour découvrir comment publier des données dans un dépôt distant afin de créer une publication qui publie la ou les variantes souhaitées. Créez ensuite un dépôt local :

Groovy

publishing {
  publications {
    release(MavenPublication) {
      ...
    }
  }
  repositories {
    maven {
      name = 'myrepo'
      url = "${project.buildDir}/repo"
    }
  }
}

Kotlin

publishing {
  publications {
    register<MavenPublication>("release") {
      ...
    }
  }
  repositories {
    maven {
      name = "myrepo"
      url = uri("${project.buildDir}/repo")
    }
  }
}

Cette action crée une tâche appelée publishReleaseToMyRepoRepository composée du nom de la publication et du nom du dépôt. Exécutez cette tâche pour générer le dépôt à l'emplacement fourni. Dans cet exemple, le dépôt est généré dans le dossier de compilation du projet, sous un répertoire repo.

Si vous souhaitez générer automatiquement un fichier ZIP du dépôt, utilisez le code suivant :

Groovy

tasks.register('generateRepo', Zip) {
  def publishTask = tasks.named('publishReleasePublicationToMyrepoRepository')
  from publishTask.map { it.getRepository().getUrl() }
  into 'mylibrary'
  archiveFileName.set('mylibrary.zip')
}

Kotlin

tasks.register<Zip>("generateRepo") {
  val publishTask = tasks.named(
    "publishReleasePublicationToMyrepoRepository",
    PublishToMavenRepository::class.java)
  from(publishTask.map { it.repository.url })
  into("mylibrary")
  archiveFileName.set("mylibrary.zip")
}

Ce code crée une tâche Zip appelée generateRepo qui utilise le contenu de la tâche de publication et la compresse tout en s'assurant que les entrées ZIP se trouvent dans un dossier racine nommé mylibrary. La sortie se trouve sous build/distributions.