Publier un fichier aar à Maven Central avec Gradle ne fonctionnant pas

Publiez un fichier aar à Maven Central avec Gradle ne fonctionne toujours pas:

Ok, reprenons toutes les étapes que j'ai suivies pour parvenir à «Publier un fichier aar à Maven Central avec Gradle» (j'ai principalement suivi ce guide ), juste pour être sûr …

1) J'utilise "Android Studio" et j'ai cette libellé Android simple que je souhaiterais être disponible sur maven: https://github.com/danielemaddaluno/Android-Update-Checker

  • Notification setLights () Valeur par défaut?
  • Définir dynamiquement la hauteur de la pagination
  • Préférences de la liste Android: avez-vous un résumé en tant que valeur sélectionnée?
  • Youtube Api android autostart
  • Traduire facilement xml dans Android
  • Faux erreur d'autorisation de peluches positive même après avoir demandé l'autorisation au moment de l'exécution
  • 2) Dans le dossier UpdateCheckerLib, j'ai le code lib mentionné ci-dessus. Et en appliquant dans build.gradle de ce dossier, apply plugin: 'com.android.library' j'ai obtenu en sortie un .aar dans le répertoire build / outputs / aar / du répertoire du module

    3) Ma première étape consistait à trouver un référentiel approuvé. J'ai décidé d'utiliser le dépôt OSS Sonatype . Ici, j'ai enregistré un projet ouvrant un nouveau problème (Create -> Create Issue -> Community Support – Open Source Project Repository Hosting -> New Project) avec groupid com.github.danielemaddaluno

    4) J'ai donc ajouté dans la racine de mon projet un fichier: maven_push.gradle :

     apply plugin: 'maven' apply plugin: 'signing' def sonatypeRepositoryUrl if (isReleaseBuild()) { println 'RELEASE BUILD' sonatypeRepositoryUrl = hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL : "https://oss.sonatype.org/service/local/staging/deploy/maven2/" } else { println 'DEBUG BUILD' sonatypeRepositoryUrl = hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL : "https://oss.sonatype.org/content/repositories/snapshots/" } def getRepositoryUsername() { return hasProperty('nexusUsername') ? nexusUsername : "" } def getRepositoryPassword() { return hasProperty('nexusPassword') ? nexusPassword : "" } afterEvaluate { project -> uploadArchives { repositories { mavenDeployer { beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } pom.artifactId = POM_ARTIFACT_ID repository(url: sonatypeRepositoryUrl) { authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) } pom.project { name POM_NAME packaging POM_PACKAGING description POM_DESCRIPTION url POM_URL scm { url POM_SCM_URL connection POM_SCM_CONNECTION developerConnection POM_SCM_DEV_CONNECTION } licenses { license { name POM_LICENCE_NAME url POM_LICENCE_URL distribution POM_LICENCE_DIST } } developers { developer { id POM_DEVELOPER_ID name POM_DEVELOPER_NAME } } } } } } signing { required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") } sign configurations.archives } task androidJavadocs(type: Javadoc) { source = android.sourceSets.main.java.sourceFiles } task androidJavadocsJar(type: Jar) { classifier = 'javadoc' //basename = artifact_id from androidJavadocs.destinationDir } task androidSourcesJar(type: Jar) { classifier = 'sources' //basename = artifact_id from android.sourceSets.main.java.sourceFiles } artifacts { //archives packageReleaseJar archives androidSourcesJar archives androidJavadocsJar } } 

    6) J'ai ajouté dans le fichier gradle.properties situé dans la racine les lignes suivantes:

     VERSION_NAME=1.0.1-SNAPSHOT VERSION_CODE=2 GROUP=com.github.danielemaddaluno POM_DESCRIPTION=Android Update Checker POM_URL=https://github.com/danielemaddaluno/Android-Update-Checker POM_SCM_URL=https://github.com/danielemaddaluno/Android-Update-Checker POM_SCM_CONNECTION=scm:git@github.com:danielemaddaluno/Android-Update-Checker.git POM_SCM_DEV_CONNECTION=scm:git@github.com:danielemaddaluno/Android-Update-Checker.git POM_LICENCE_NAME=The Apache Software License, Version 2.0 POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt POM_LICENCE_DIST=repo POM_DEVELOPER_ID=danielemaddaluno POM_DEVELOPER_NAME=Daniele Maddaluno 

    7) À l'intérieur de la racine, j'ai modifié le build.gradle à partir de ceci:

     buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' } } allprojects { repositories { jcenter() } } 

    Pour ça:

     buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' } } def isReleaseBuild() { return version.contains("SNAPSHOT") == false } allprojects { version = VERSION_NAME group = GROUP repositories { mavenCentral() } } apply plugin: 'android-reporting' 

    8) J'ai lu que pour chaque module ou application que je souhaite télécharger sur le centre, je devrais:

    • Fournir une graduation.propriétés
    • Modifiez build.gradle pour ajouter la ligne suivante à la fin: apply from: '../maven_push.gradle'

    Donc dans le dossier UpdateCheckerLib I:

    • Ajout de gradle.properties:

       POM_NAME=Android Update Checker POM_ARTIFACT_ID=androidupdatechecker POM_PACKAGING=aar 
    • Modifié build.gradle en ajoutant au bas du fichier la ligne suivante: apply from: '../maven_push.gradle'

    9) Pour signer mes artefacts, j'ai fait:

     gpg --gen-key gpg --list-keys --> get my PubKeyId... gpg --keyserver hkp://pool.sks-keyservers.net --send-keys PubKeyId 

    10) J'ai ajouté un fichier au chemin ~/.gradle/gradle.properties avec un contenu comme celui-ci (pour obtenir la clé secrète, j'ai utilisé gpg --list-secret-keys ):

     signing.keyId=xxxxxxx signing.password=YourPublicKeyPassword signing.secretKeyRingFile=~/.gnupg/secring.gpg nexusUsername=YourSonatypeJiraUsername nexusPassword=YourSonatypeJiraPassword 

    11) sudo apt-get install gradle dans le terminal parce que "Andoid Studio" teminal n'a pas reconnu gradle …

    12) Enfin gradle uploadArchives

    13) J'ai eu cette erreur:

     FAILURE: Build failed with an exception. * Where: Build file '/home/madx/Documents/Workspace/Android-Update-Checker/UpdateCheckerLib/build.gradle' line: 1 * What went wrong: A problem occurred evaluating project ':UpdateCheckerLib'. > Could not create plugin of type 'LibraryPlugin'. 

    Probablement, il est simplement dû à un problème de plugin gradle / gradle, mais je voulais partager toute la procédure, au cas où cela pourrait être utile pour quelqu'un d'autre!

    Merci d'avance!


    Publiez un fichier aar à jCenter avec Gradle ne fonctionne toujours pas:

    Un grand merci à JBaruch et à son anwer! J'essaie donc de publier sur jCenter au lieu de Maven Central, en fait, jcenter () est un superset de mavenCentral (). Ok, recommençons à partir de ma bibliothèque github Android-Update-Checker . J'ai essayé de suivre certains de ses conseils, mais je suis encore coincé … Je vais écrire mes étapes également pour la publication jcenter (en espérant que cela pourrait être utile à quelqu'un). Peut-être me manque-t-il quelque chose …

    1) Enregistré dans Bintray avec le username d' username : danielemaddaluno

    2) Activation de la signature automatique du contenu téléchargé:
    De l' URL du profil Bintray -> Signature GPG -> copie collez vos public/private keys . Vous pouvez trouver respectivement ces deux fichiers public_key_sender.asc/private_key_sender.asc si vous exécutez le code suivant (l'option -a ou --armor dans gpg est utilisée pour générer une paire de clés blindées ASCII):

      gpg --gen-key gpg -a --export daniele.maddaluno@gmail.com > public_key_sender.asc gpg -a --export-secret-key daniele.maddaluno@gmail.com > private_key_sender.asc 

    2.1) Dans la même page Web, vous pouvez configurer la signature automatique à partir de: Référentiels -> Maven -> Vérifiez automatiquement "- Fichier téléchargé de la signature GPG" -> Mise à jour

    3) Dans la même page Web, vous pouvez trouver votre Bintray API Key (copiez-la pour une utilisation ultérieure)

    4) Dans la même page Web, vous pouvez configurer votre Sonatype OSS User (dans la section précédente de la question, j'ai déjà créé un utilisateur et un problème)

    5) J'ai ajouté ces deux lignes à build.gradle dans la racine

     classpath 'com.github.dcendents:android-maven-plugin:1.2' classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.1" 

    De sorte que mon propre build.gradle dans la racine ressemble à:

     buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' classpath 'com.github.dcendents:android-maven-plugin:1.2' classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.1" } } allprojects { repositories { jcenter() } } 

    6) J'ai modifié mon build.gradle situé dans mon dossier de projet, et il ressemble à:

     apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' apply plugin: "com.jfrog.bintray" // This is the library version used when deploying the artifact version = "1.0.0" android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { //applicationId "com.madx.updatechecker.lib" minSdkVersion 8 targetSdkVersion 21 versionCode 1 versionName "1.0.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'org.jsoup:jsoup:1.8.1' } def siteUrl = 'https://github.com/danielemaddaluno/Android-Update-Checker' // Homepage URL of the library def gitUrl = 'https://github.com/danielemaddaluno/Android-Update-Checker.git' // Git repository URL group = "com.github.danielemaddaluno.androidupdatechecker" // Maven Group ID for the artifact install { repositories.mavenInstaller { // This generates POM.xml with proper parameters pom { project { packaging 'aar' // Add your description here name 'The project aims to provide a reusable instrument to check asynchronously if exists any newer released update of your app on the Store.' url siteUrl // Set your license licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } developers { developer { id 'danielemaddaluno' name 'Daniele Maddaluno' email 'daniele.maddaluno@gmail.com' } } scm { connection gitUrl developerConnection gitUrl url siteUrl } } } } } task sourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier = 'sources' } task javadoc(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) } task javadocJar(type: Jar, dependsOn: javadoc) { classifier = 'javadoc' from javadoc.destinationDir } artifacts { archives javadocJar archives sourcesJar } Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) bintray { user = properties.getProperty("bintray.user") key = properties.getProperty("bintray.apikey") configurations = ['archives'] pkg { repo = "maven" name = "androidupdatechecker" websiteUrl = siteUrl vcsUrl = gitUrl licenses = ["Apache-2.0"] publish = true } } 

    7) J'ai ajouté au fichier racine local.properties les lignes suivantes:

     bintray.user=<your bintray username> bintray.apikey=<your bintray API key> 

    8) Ajouté à mon PATH le gradle 2.2.1 par défaut utilisé par "Android Studio", par exemple:

     PATH=$PATH:/etc/android-studio/gradle/gradle-2.2.1/bin 

    9) Ouvrez le terminal "Android Studio" et exécutez:

     gradle bintrayUpload 

    10) De Bintray -> Mes derniers paquets -> androidupdatechecker (ceci est ici uniquement après l'exécution du point précédent 9) -> Ajouter à Jcenter -> Vérifiez la case -> Group ID = "com.github .danielemaddaluno.androidupdatechecker ".

    11) Enfin, j'ai essayé de suivre: Bintray -> Mes derniers paquets -> androidupdatechecker -> Maven Central -> Sync, mais j'ai eu cette erreur dans la barre "Sync Status" à droite de la page:

     Last Synced: Never Last Sync Status: Validation Failed Last Sync Errors: Missing Signature: '/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0-javadoc.jar.asc' does not exist for 'UpdateCheckerLib-1.0.0-javadoc.jar'. Missing Signature: '/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0.aar.asc' does not exist for 'UpdateCheckerLib-1.0.0.aar'. Missing Signature: '/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0-sources.jar.asc' does not exist for 'UpdateCheckerLib-1.0.0-sources.jar'. Missing Signature: '/com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0.pom.asc' does not exist for 'UpdateCheckerLib-1.0.0.pom'. Invalid POM: /com/github/danielemaddaluno/androidupdatechecker/UpdateCheckerLib/1.0.0/UpdateCheckerLib-1.0.0.pom: Project description missing Dropping existing partial staging repository. 

  • Le fragment de remplacement d'Android affiche encore certains des fragments remplacés
  • Comment écrire la liste <> dans la parcelle
  • ViewPager setCurrentItem Slide
  • Support speex dans Android
  • Envoyer un courrier électronique avec un objet bitmap en pièce jointe dans Android?
  • Aucun onglet de propriétés dans l'éditeur de ressources de mise en page
  • 2 Solutions collect form web for “Publier un fichier aar à Maven Central avec Gradle ne fonctionnant pas”

    Vous pouvez publier votre aar à JCenter à la place.

    1. C'est par défaut dans Android Studio .
    2. Vous pouvez synchroniser à Central de là de manière beaucoup plus facile .
    3. Il est tellement plus facile de publier là-bas .
    4. Vous pouvez utiliser oss.jfrog.org pour des instantanés .

    Chaque étape, je devais publier mon fichier aar dans JCenter, puis le synchroniser avec Maven Central pourrait être lu ici: https://github.com/danielemaddaluno/gradle-jcenter-publish

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.