首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用maven-publish gradle插件附加AAR文件的源代码?

如何使用maven-publish gradle插件附加AAR文件的源代码?
EN

Stack Overflow用户
提问于 2019-08-05 22:57:54
回答 1查看 1.8K关注 0票数 4

我将AAR发布给我的团队的另一部分,只签出这个AAR,而不签出源代码。

我想为他们提供源代码,无缝地(通过Ctrl + Click on class或Ctrl +B直接在Android Studio中获得源代码)。

据我所知,这只可能与.jar档案,而不是.aar。

下面是maven-publish配置文件。我可以将归档文件(调试、“发布”和源代码)发布到maven。我可以获得调试依赖项("xxx-debug.aar")。我可以手动下载源代码(“xxx-Soures.jar”),并通过"Choose sources...“链接它们。在Android Studio中。但链接并不像其他任何像样的库那样是自动的(我想到的是Retrofit或OkHttp ):

代码语言:javascript
复制
// MAVEN PUBLICATION

apply plugin: 'maven-publish'

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

publishing {

    group = 'foo.bar.rootpackage'
    version = "foobar1.0"

    publications {

        aar(MavenPublication) {

            println("Maven publish: package name is ${aarName}")

            groupId group
            artifactId sdkModuleName
            version version

            artifact(sourceJar)

            def debugAar = "$buildDir/outputs/aar/${aarName}-debug.aar"
            if (new File(debugAar).exists()) {
                artifact(debugAar) {
                    classifier 'debug'
                    extension 'aar'
                }
            }

            def releaseAar = "$buildDir/outputs/aar/${aarName}-release.aar"
            if (new File(releaseAar).exists()) {
                artifact(releaseAar) {
                    extension 'aar'
                }
            }

            //The publication doesn't know about our dependencies, so we have to manually add them to the pom
            pom.withXml {
                def dependenciesNode = asNode().appendNode('dependencies')

                def compileTimeDependencies = configurations.api.allDependencies +
                        configurations.implementation.allDependencies +
                        configurations.releaseImplementation.allDependencies

                appendDependencies(compileTimeDependencies, dependenciesNode)
            }
        }
    }

    repositories {
        maven {
            // PRIVATE MAVEN STUFF
        }
    }
}

ext {
    appendDependencies = { Set<Dependency> compileTimeDependencies, dependenciesNode ->

        compileTimeDependencies.each {
            def dependencyNode = dependenciesNode.appendNode('dependency')
            dependencyNode.appendNode('groupId', it.group)
            dependencyNode.appendNode('artifactId', it.name)
            dependencyNode.appendNode('version', it.version)

            if (!it.excludeRules.isEmpty()) {
                def exclusionsNode = dependencyNode.appendNode('exclusions')
                it.excludeRules.each { rule ->
                    def exclusionNode = exclusionsNode.appendNode('exclusion')
                    exclusionNode.appendNode('groupId', rule.group)
                    exclusionNode.appendNode('artifactId', rule.module ?: '*')
                }
            }
        }
    }
}

在需要此依赖项的另一个项目的build.gradle中,我实现了如下依赖项:

代码语言:javascript
复制
    debugApi("foo.bar.rootpackage:core:$foobar1.0:debug@aar") {
        transitive = true
    }
    releaseApi("foo.bar.rootpackage:core:$foobar1.0@aar") {
        transitive = true
    }

项目构建,但没有与源代码的“自动链接”。

如何修复?

EN

回答 1

Stack Overflow用户

发布于 2019-08-19 02:53:51

使用android-maven-publish。链接源包应该在生成的POM中发生。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57361203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档