依赖关系未添加到POM文件 - Android Gradle Maven Publishing

时间:2015-03-24 07:18:00

标签: android gradle android-gradle

我正在使用maven-publish插件将aar文件发布到maven存储库。但是我注意到,即使添加了传递属性,编译依赖项也没有添加到pom.xml中。我正在使用com.android.tools.build:gradle:1.1.3

有关如何解决此问题的任何提示?

的build.gradle

publishing {
    publications {
        sdkAar(MavenPublication) {
            artifacts {
                groupId 'com.test'
                artifactId 'my_sdk'
                version currentVersion
                artifact 'build/outputs/aar/release.aar'
                artifact androidJavadocsJar {
                    classifier "javadoc"
                }
            }
        }
        sdkJar(MavenPublication) {
            groupId 'com.test'
            artifactId 'my_sdk_jar'
            version currentVersion
            artifact 'build/libs/release.jar'
            artifact androidJavadocsJar {
                classifier "javadoc"
            }
        }
    }
    repositories {
        maven {
            credentials {
                username archiva_username
                password archiva_password
            }
        }
    }
}

先谢谢

2 个答案:

答案 0 :(得分:1)

如果要将依赖项自动添加到POM,则需要使用组件功能。以下是用户指南中的示例:

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}

from ...很重要。我不知道Android插件是否设置了自己的软件组件。我看不到任何对此类事物的引用。

请记住,新的发布机制目前正在孵化,也许这就是为什么Android插件目前不提供任何直接支持的原因。

如果您确实想使用发布插件,则可以获取工件的运行时依赖项,并使用the syntax described in the user guide手动将它们添加到POM中。我不推荐这种方法,因为它很麻烦,看起来容易出错。

答案 1 :(得分:0)

依赖项未自动添加,您需要添加发布标记。

publishing {
    publications {
        aar(MavenPublication) {
            groupId libraryGroupId
            version = libraryVersion
            artifactId libraryArtifactId
            artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")

            pom.withXml {
                def dependencies = asNode().appendNode('dependencies')
                configurations.getByName("_releaseCompile").getResolvedConfiguration().getFirstLevelModuleDependencies().each {
                    def dependency = dependencies.appendNode('dependency')
                    dependency.appendNode('groupId', it.moduleGroup)
                    dependency.appendNode('artifactId', it.moduleName)
                    dependency.appendNode('version', it.moduleVersion)
                }
            }
        }
    }