美文网首页
android sdk发布jcenter依赖传递问题记录。

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

作者: 愤怒的小铁匠 | 来源:发表于2020-03-25 16:15 被阅读0次

    近来公司自己新开发了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文件中记录了所有的第三方库,至此,问题解决。记录一下,防止以后遇到了问题会忘记处理方式。

    相关文章

      网友评论

          本文标题:android sdk发布jcenter依赖传递问题记录。

          本文链接:https://www.haomeiwen.com/subject/xlkxuhtx.html