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