gradle maven-publish发布aar避免出现版本号unspecified情况

59 篇文章 0 订阅

加上如下的判断:

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')
                        }
                    }
                }
            }

        }
    }
}

在这里做个笔记

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
m-publish是一个Gradle插件,用于将本地library发布到Apache Maven仓库。通过使用该插件,我们可以将*.aar、*.jar等library发布到仓库中,并通过gradle或者maven进行远程依赖使用。 要使用maven-publish插件,需要在build.gradle中声明插件,并在publishing{}块中进行配置。首先,通过在plugins{}块中添加id 'maven-publish'来声明插件。然后,在publishing{}块中,可以配置group和version属性,以及定义要发布的publication和repository。 例如,通过components.java来指定要发布的library,使用mavenLocal()来指定要发布到的仓库。可以根据需要添加更多的publication和repository配置。 maven-publish插件提供了一些任务,如generatePomFileForPubNamePublication用于创建需要发布的POM文件,并填充一些已知的元数据,例如项目名称、项目版本和依赖项。publishPubNamePublicationToRepoNameRepository用于将指定publication发布到指定repository。publishPubNamePublicationToMavenLocal用于将指定publication发布复制到本地Maven缓存,包括POM文件和其他元数据。 此外,还有一些其他任务,如publish将所有定义的publication发布到所有定义的存储库的聚合任务,而publishToMavenLocal将所有定义的publication复制到本地Maven库中,包括它们的元数据。 例如,如果我们有一个名为myLibrary的publication,并将其发布mavenLocal()仓库,我们可以运行命令publishPubNamePublicationToMavenLocal来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值