【问题标题】:Kotlin Android Library Module exported with gradle maven-publish plugin not adding dependencies使用 gradle maven-publish 插件导出的 Kotlin Android 库模块未添加依赖项
【发布时间】:2017-10-14 05:31:23
【问题描述】:

我正在尝试使用 gradle 的 maven-publish plugin 导出在 Kotlin 中开发的 Android 库模块。 aar 文件已成功生成并导出,但没有添加任何依赖项 - 根本没有,甚至 Kotlin 也没有。下面是基于this答案的插件配置:

apply plugin: 'maven-publish'

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

ext {
    releaseRepository = "s3://****/maven/releases"
    snapshotsRepository = "s3://****/maven/snapshots"
    artifactRepository = "$buildDir/outputs/aar/render-engine-release.aar"

    _version = properties.getProperty('lib.version')
    _artifact = properties.getProperty('lib.name')
    _group = properties.getProperty('lib.group')
}


task sourceJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier "source"
}

publishing {
    publications {
        maven(MavenPublication) {
            groupId _group
            artifactId _artifact
            version _version
            artifact (sourceJar)
            artifact artifactRepository

            pom.withXml {
                def dependenciesNode = asNode().appendNode('dependencies')

                configurations.compile.allDependencies.each {
                    if(_group != null && (_artifact != null || "unspecified" == _artifact) && _version != null) {
                        def dependencyNode = dependenciesNode.appendNode('dependency')

                        dependencyNode.appendNode('groupId', _group)
                        dependencyNode.appendNode('artifactId', _artifact)
                        dependencyNode.appendNode('version', _version)
                    }
                }
            }
        }
    }

    repositories {
        maven {
            if(_version.endsWith('-SNAPSHOT')) {
                url snapshotsRepository
            } else {
                url releaseRepository
            }

           credentials(AwsCredentials) {
                accessKey AWS_ACCESS_KEY
                secretKey AWS_SECRET_KEY
           }
        }
    }
}

【问题讨论】:

    标签: android maven android-gradle-plugin kotlin maven-publish


    【解决方案1】:

    好的,所以请继续阅读链接的question 上的答案,我已经实施了this,它解决了我的问题。我最终的 publish.gradle 是这样的:

    apply plugin: 'maven-publish'
    
    Properties properties = new Properties()
    properties.load(project.rootProject.file('local.properties').newDataInputStream())
    
    ext {
        releaseRepository = "s3://****/maven/releases"
        snapshotsRepository = "s3://****/maven/snapshots"
        artifactRepository = "$buildDir/outputs/aar/render-engine-release.aar"
    
        _version = properties.getProperty('lib.version')
        _artifact = properties.getProperty('lib.name')
        _group = properties.getProperty('lib.group')
    }
    
    
    task sourceJar(type: Jar) {
        from android.sourceSets.main.java.srcDirs
        classifier "source"
    }
    
    publishing {
        publications {
            maven(MavenPublication) {
                groupId _group
                artifactId _artifact
                version _version
                artifact(sourceJar)
                artifact artifactRepository
    
                pom.withXml {
                    def dependenciesNode = asNode().appendNode('dependencies')
    
                    configurations.compile.getAllDependencies().each { Dependency dep ->
                        if (dep.group == null || dep.version == null || dep.name == null || dep.name == "unspecified")
                            return
    
                        def dependencyNode = dependenciesNode.appendNode('dependency')
                        dependencyNode.appendNode('groupId', dep.group)
                        dependencyNode.appendNode('artifactId', dep.name)
                        dependencyNode.appendNode('version', dep.version)
    
                        if (!dep.transitive) {
                            def exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion')
                            exclusionNode.appendNode('groupId', '*')
                            exclusionNode.appendNode('artifactId', '*')
                        } else if (!dep.properties.excludeRules.empty) {
                            def exclusionsNode = dependencyNode.appendNode('exclusions')
                            dep.properties.excludeRules.each { ExcludeRule rule ->
                                def exclusionNode = exclusionsNode.appendNode('exclusion')
                                exclusionNode.appendNode('groupId', rule.group ?: '*')
                                exclusionNode.appendNode('artifactId', rule.module ?: '*')
                            }
                        }
                    }
                }
            }
        }
    
        repositories {
            maven {
                if (_version.endsWith('-SNAPSHOT')) {
                    url snapshotsRepository
                } else {
                    url releaseRepository
                }
    
                credentials(AwsCredentials) {
                    accessKey AWS_ACCESS_KEY
                    secretKey AWS_SECRET_KEY
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-05-27
      • 2018-07-06
      • 1970-01-01
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 2022-07-14
      • 1970-01-01
      • 2016-06-20
      相关资源
      最近更新 更多