加上如下的判断:
dependency.version != null && "unspecified" != dependency.version
完整代码如下:
apply plugin: 'maven-publish'
println "publish -->> moduleName: " + moduleName
println "publish -->> moduleVersion: " + moduleVersion
println "publish -->> moduleDescription: " + moduleDescription
task generateSourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
archiveClassifier.set("sources")
}
publishing {
//maven配置参数
repositories {
maven {
url = moduleVersion.endsWith('SNAPSHOT') ? MAVEN_URL_SNAPSHOT : MAVEN_URL_RELEASE
credentials {
username MAVEN_USER_NAME
password MAVEN_PWD
}
}
}
publications {
//名字可以随意,如果有多渠道,整段再下面多复制一个
Publish(MavenPublication) {
groupId = GROUP_ID//公司域名
//def projectName = project.getName()
artifactId = moduleName//该aar包的名称
version = moduleVersion//版本号
// 必须有这个 否则不会上传AAR包
afterEvaluate { artifact(tasks.getByName("bundleReleaseAar")) }
// 必须是多渠道,需要指定aar路径
//afterEvaluate { artifact("build/outputs/aar/app-debug.aar") }
// 上传source,这样使用方可以看到方法注释
artifact generateSourcesJar
pom{
description = moduleDescription
//'新增了功能:\n' +
//' 对于应用启动时长记录,\n' +
//' 可以上报应用启动时长\n' //project description
// pom文件中声明依赖,从而传递到使用方
withXml { a ->
def dependenciesNode = asNode().appendNode('dependencies')
configurations.implementation.allDependencies.each {
//println "000===dependency=${it.name}---${it.version}"
// 避免出现空节点或 artifactId=unspecified 的节点
if (it.group != null && (it.name != null && "unspecified" != it.name) && (it.version != null && "unspecified" != it.version)) {
println "dependency=${it.toString()}"
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
dependencyNode.appendNode('scope', 'implementation')
}
}
}
}
}
}
}
在这里做个笔记