Falta dependencias de la biblioteca de Android de POM con Gradle

Estoy usando Gradle para construir un proyecto de biblioteca de Android y desplegarlo en el repositorio de maven como un aar.

La biblioteca tiene algunas dependencias, que deben ser incluidas en el POM

Con apply plugin: 'maven' no hay ningún archivo POM presente, sólo el artefacto

Con el apply plugin: 'maven-publish' se genera un archivo POM, pero no incluye ninguna dependencia

¿Algunas ideas? ¿Es esto simplemente no es compatible?

Gradle 2.2 y Android Gradle Plugin 1.1.0

Primer enfoque:

 configurations { archives { extendsFrom configurations.default } } afterEvaluate { project -> uploadArchives { configuration = configurations.archives repositories { mavenDeployer { repository(url: "http://nexus-url") { authentication(userName: nexusUsername, password: nexusPassword) pom.groupId = 'com.example' pom.version = '123-SNAPSHOT' pom.artifactId = 'foo' pom.packaging = 'aar' pom.project { artifactId = 'bar' packaging 'aar' description 'baz' } } } } 

También lo intentó sin envolverlo en afterEvaluate

Segundo enfoque:

 publishing { publications { sdk(MavenPublication) { groupId 'com.example' artifactId 'foo' version = "0.123-SNAPSHOT" artifact("$buildDir/outputs/aar/app-sdk-debug.aar") } } repositories { maven { url "http://nexus-url" credentials { username 'foo' password 'bar' } } } } 

Actualizar

La causa principal del problema es que este proyecto utiliza sabores. Sin sabores, el pom se genera correctamente cuando se usa apply plugin: 'maven'

2 Solutions collect form web for “Falta dependencias de la biblioteca de Android de POM con Gradle”

Esta es la solución que funcionó para mí al final:

 publishing { publications { sdk(MavenPublication) { artifactId libName artifact "${project.buildDir}/outputs/aar/${libName}-${project.version}.aar" //The publication doesn't know about our dependencies, so we have to manually add them to the pom pom.withXml { // for dependencies and exclusions def dependenciesNode = asNode().appendNode('dependencies') configurations.compile.allDependencies.each { ModuleDependency dp -> def dependencyNode = dependenciesNode.appendNode('dependency') dependencyNode.appendNode('groupId', dp.group) dependencyNode.appendNode('artifactId', dp.name) dependencyNode.appendNode('version', dp.version) // for exclusions if (dp.excludeRules.size() > 0) { def exclusions = dependencyNode.appendNode('exclusions') dp.excludeRules.each { ExcludeRule ex -> def exclusion = exclusions.appendNode('exclusion') exclusion.appendNode('groupId', ex.group) exclusion.appendNode('artifactId', ex.module) } } } } } } repositories { maven { name 'myrepo' url 'https://maven.foo.com' credentials { username mavenUsername password mavenPassword } } } } 

Prueba mavenDeployer: http://gradle.org/docs/current/userguide/maven_plugin.html

 uploadArchives { repositories { mavenDeployer { repository(url: "file://localhost/tmp/myRepo/") pom.version = '1.0Maven' pom.artifactId = 'myMavenName' } } } 

Aquí usted podría fijar los detalles del pom. Obtendrás un nuevo objetivo llamado uploadArchives . Cuando se ejecuta, se despliega en un repositorio determinado.

  • Obteniendo java.lang.RuntimeException: Stub al ejecutar Robolectric a través de Maven
  • ¿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
  • Maven vs Ant para compilaciones automáticas en aplicaciones de Android
  • No se pudieron resolver todas las dependencias para la configuración ': classpath'
  • Error al crear un proyecto de Android con Maven
  • M2E no funcionó con el proyecto existente Maven
  • ¿Android con maven? Apk desconocido
  • Cree la Biblioteca de Archivos de Android (AAR) con maven solamente
  • Android Maven No se pudo encontrar la herramienta 'aapt'
  • No encontré la clase en la ruta: dexpathlist
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.