Зависимости от библиотеки Android, отсутствующие в POM с Gradle

Я использую Gradle для создания проекта библиотеки Android и развертывания его в репозитории maven как aar.

Библиотека имеет некоторые зависимости, которые должны быть включены в POM

С apply plugin: 'maven' нет POM-файла, просто артефакт

С apply plugin: 'maven-publish' создается POM-файл, но он не включает никаких зависимостей

Есть идеи? Это просто не поддерживается?

Gradle 2.2 и Android Gradle Plugin 1.1.0

Первый подход:

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

Также попробовал это, не завернув его в afterEvaluate

Второй подход:

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

Обновить

Основная причина проблемы заключается в том, что этот проект использует ароматы. Без флейворов pom генерируется должным образом при использовании apply plugin: 'maven'

Это решение, которое сработало для меня в конце:

 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 } } } } 

Попробуйте 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' } } } 

Здесь вы можете установить детали pom. Вы получите новую цель, называемую uploadArchives . При выполнении он развертывается в заданное репо.