android sdk发布jcenter依赖传递问题记录。

近来公司自己新开发了SDK,准备发布到jcenter,参考了https://www.jianshu.com/p/275fc9d54e4a
的教程一步一步设置完成后发布jcenter仓库成功,demo工程直接引用后运行报错,ClassNotfound,需要把SDK中所有的第三方依赖添加到demo工程中才能正常运行,经过排查发现生成的POM文件中第三方依赖并没有一起打包进SDK,导致运行报错,最终经过网上搜索,参考了https://java.ctolib.com/gradle-bintray-plugin.html给出的方法,成功解决了依赖传递的问题。

具体操作如下:

// 配置maven库,生成POM.xml文件
install {
    repositories.mavenInstaller {
        // This generates POM.xml with proper parameters
        pom {
            project {
                packaging 'aar'
                //项目描述,随意填
                name 'A colorful circle view with text.'
                url siteUrl
                licenses {
                    license {
                        //开源协议
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                developers {
                    developer {
                        //开发者的个人信息
                        id 'xxxxxx'
                        name 'xxxxxxx'
                        email 'xxxxxxxx@gmail.com'
                    }
                }
                scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl
                }
                //此处处理依赖传递
                dependencies {
                    pom.withXml {
                        def dependenciesNode = asNode().getAt('dependencies')[0] ?: asNode().appendNode('dependencies')

                        // Iterate over the implementation dependencies (we don't want the test ones), adding a <dependency> node for each
                        configurations.implementation.allDependencies.each {
                            // Ensure dependencies such as fileTree are not included.
                            if (it.name != 'unspecified') {
                                def dependencyNode = dependenciesNode.appendNode('dependency')
                                dependencyNode.appendNode('groupId', it.group)
                                dependencyNode.appendNode('artifactId', it.name)
                                dependencyNode.appendNode('version', it.version)
                            }
                        }
                    }
                }
            }
        }
    }
}

添加了dependencies 节点后重新打包,POM文件中记录了所有的第三方库,至此,问题解决。记录一下,防止以后遇到了问题会忘记处理方式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容