Publicar un archivo aar en Maven Central con Gradle no trabajando

Publique un archivo aar en Maven Central con Gradle aún no funciona:

Ok, vamos a reapear todos los pasos que seguí para gestionar a "Publicar un archivo aar a Maven Central con Gradle" (que principalmente seguido esta guía ), sólo para estar seguro …

1) Yo uso "Android Studio" y tengo esta lib android simple que me gustaría estar disponible en maven: https://github.com/danielemaddaluno/Android-Update-Checker

2) En la carpeta UpdateCheckerLib tengo el código lib mencionado anteriormente. Y la aplicación en el build.gradle de esta carpeta se apply plugin: 'com.android.library' tengo como salida un .aar en el directorio build / outputs / aar / del directorio del módulo

3) Mi primer paso fue encontrar un repositorio aprobado. Decidí usar el repositorio de OSS de Sonatype . Aquí he registrado un proyecto abriendo un nuevo problema (Create -> Create Issue -> Community Support – Open Source Project Repository Hosting -> New Project) con groupid com.github.danielemaddaluno

4) Así que agregué en la raíz de mi proyecto un archivo: 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) He añadido en el archivo gradle.properties ubicado en la raíz las siguientes líneas:

 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) Dentro de la raíz he modificado el build.gradle de esto:

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

A esto:

 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) He leído que para cada módulo o aplicación que quiero subir a central, debo:

  • Proporcionar un gradle.propeties
  • Modifique build.gradle para agregar la siguiente línea al final: apply from: '../maven_push.gradle'

Así que en la carpeta UpdateCheckerLib:

  • Se agregó un gradle.properties:

     POM_NAME=Android Update Checker POM_ARTIFACT_ID=androidupdatechecker POM_PACKAGING=aar 
  • Se ha modificado el build.gradle añadiendo en la parte inferior del archivo la siguiente línea: apply from: '../maven_push.gradle'

9) Para firmar mis artefactos lo hice:

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

10) He añadido un archivo a la ~/.gradle/gradle.properties con un contenido como este (para obtener la clave secreta que usé 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 en el terminal porque "Andoid Studio" teminal no reconoció gradle …

12) Por último gradle uploadArchives

13) Tengo este error:

 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'. 

Probablemente es simplemente debido a un problema de plugin gradle / gradle, pero quería compartir todo el procedimiento, sólo en caso de que podría ser útil para alguien más!

¡Gracias por adelantado!


Publicar un archivo aar en jCenter con Gradle aún no funciona:

Un gran agradecimiento va a JBaruch y su anwer! Así que estoy tratando de publicar en jCenter en lugar de Maven Central, como cuestión de hecho que jcenter () es un superconjunto de mavenCentral (). Ok vamos a empezar de nuevo desde mi github biblioteca Android-Update-Checker . Traté de seguir algunos de sus consejos, pero todavía estoy atascado … Voy a escribir mis pasos también para la publicación jcenter (esperando que podría ser útil para alguien). Tal vez me estoy perdiendo algo …

1) Registrado en Bintray con username : danielemaddaluno

2) Habilitando la firma automática del contenido cargado:
Desde el perfil Bintray url -> Firma GPG -> copiar pegar sus public/private keys . Puede encontrar estos dos en los archivos public_key_sender.asc/private_key_sender.asc si ejecuta el siguiente código (la opción -a o --armor en gpg se utiliza para generar pares de claves ASCII-blindados):

  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) En la misma página web puede configurar la firma automática desde: Repositorios -> Maven -> Compruebe la "GPG Sign uploaded files automatically" -> Update

3) En la misma página web puede encontrar su Bintray API Key (copiarlo para uso posterior)

4) En la misma página web puede configurar su Sonatype OSS User (en la sección anterior de la pregunta que ya he creado un usuario y un problema)

5) He añadido estas dos líneas a la build.gradle en la raíz

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

Para que mi propio build.gradle en la raíz se vea así:

 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) build.gradle mi build.gradle localizado dentro de mi carpeta del proyecto, y parece:

 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) He añadido al archivo raíz local.properties las siguientes líneas:

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

8) Añadido a mi PATH el degradado por defecto 2.2.1 realmente utilizado por "Android Studio", por ejemplo:

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

9) Abra el terminal "Android Studio" y ejecute:

 gradle bintrayUpload 

10) De Bintray -> Mis Paquetes Recientes -> androidupdatechecker (esto es aquí sólo después de la ejecución del punto anterior 9) -> Añadir a Jcenter -> Marque la casilla -> Group Id = "com.github .danielemaddaluno.androidupdatechecker ".

11) Finalmente intenté seguir: Bintray -> Mis Paquetes Recientes -> androidupdatechecker -> Maven Central -> Sync pero tengo este error en la barra de "Estado de sincronización" a la derecha de la página:

 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. 

Puede publicar su aar en JCenter en su lugar.

  1. Es el valor predeterminado en Android Studio .
  2. Usted puede sincronizar a central de allí de una manera mucho más fácil .
  3. Es mucho más fácil publicar allí .
  4. Puede utilizar oss.jfrog.org para instantáneas .

Cada paso que necesitaba para publicar mi archivo aar a JCenter y luego sincronizarlo con Maven Central se podía leer aquí: https://github.com/danielemaddaluno/gradle-jcenter-publish

  • Error al crear un proyecto de Android con Maven
  • ¿Cómo puedo especificar qué versión de herramientas de compilación android en Maven
  • Nombre del paquete variable con Maven Android Plugin
  • ¿Cómo automatizar las creaciones de android para la versión lite y de la prima?
  • La importación de mi biblioteca de Android en una aplicación no se reconoce como una biblioteca
  • ¿Hay alguna forma de desactivar javadoc se bloquea en Android Studio con Maven plugin?
  • Uso de debug.keystore especificado en las compilaciones de Maven Android
  • Maven y android - Creaciones ligeramente diferentes para diferentes entornos
  • Robolectric 2.x + Maven en Jenkins falló con las dependencias APKLIB
  • ¿Qué beneficios ofrece Maven (sobre hormigas) para la construcción de proyectos para Android?
  • Cómo convertir mi proyecto de Android en un proyecto de maven
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.