如何使用Gradle脚本发布maven

本文介绍了如何在Gradle工程中添加Maven发布脚本,详细讲解了版本管理、依赖配置、发布类型切换以及私有仓库上传过程。通过applyfrom语句集成发布脚本,适用于快速构建和部署Android或通用库项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在要发布的工程中添加maven发布脚本,脚本内容如下:

//引入gradle maven插件
apply plugin: 'maven-publish'
//配置参数,版本号和groupID,每次发布不同版本时,需要修改版本号
project.ext.lib_version = "1.0.0" 
project.ext.lib_group = "com.tencent.thumbplayer"
//固定参数,maven上传URL和用户名密码
project.ext.releaseUploadRepo = 'http://maven.oa.com/nexus/content/repositories/thirdparty'
project.ext.debugUploadRepo = 'http://maven.oa.com/nexus/content/repositories/thirdparty-snapshots'
project.ext.uploadUserName = 'rdm'
project.ext.uploadUserPass = 'rdm'
//artifactId,默认采用工程名字,也可以直接指定
project.ext.artifactId = project.name.toLowerCase()
project.ext.uploadRepo = project.releaseUploadRepo
if (!project.hasProperty('versionType')) { 
    //这里默认上传debug版本,如果要上传release版本,可以修改成release
    project.ext.versionType = 'debug'
}
if (project.versionType != 'release') {
    project.uploadRepo = project.debugUploadRepo
    //debug版本的版本号后面默认加上-SNAPSHOT
    project.lib_version += '-SNAPSHOT'
}
task androidSourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}
def makeDependencies(dependencies, closure) {
    dependencies.each {
        if((it.group != null) && (it.name != null) && (it.version != null)) {
            println "makeDependencies for: $it.group:$it.name:$it.version"
            def isLocalDependence = it.group == rootProject.name
            def groupId = isLocalDependence ? project.lib_group : it.group
            def version = isLocalDependence ? project.lib_version : it.version
            def artName = isLocalDependence ? it.name : it.name
            closure.call(groupId, artName, version)
        }
    }
}
def configPublishAar(publication) {
    publication.artifact androidSourcesJar
    publication.groupId project.lib_group
    publication.artifactId project.artifactId
    publication.version project.lib_version
    println "artfact: $publication.groupId:$publication.artifactId:$publication.version"
    publication.pom.withXml {
        def dependenciesNode = asNode().appendNode('dependencies')
        makeDependencies(configurations.api.dependencies + configurations.implementation.dependencies) { groupId, artifactId, version ->
            println "add dependency: $groupId:$artifactId:$version"
            def dependencyNode = dependenciesNode.appendNode('dependency')
            dependencyNode.appendNode('groupId', groupId)
            dependencyNode.appendNode('artifactId', artifactId)
            dependencyNode.appendNode('version', version)
        }
    }
}
publishing {
    publications {
        aar(MavenPublication) {
            if (project.versionType == 'release') {
                artifact bundleRelease 
                //这里可能有Gradle版本差异,有时候使用bundleReleaseAar
            } else {
                artifact bundleDebug
            }
            configPublishAar(it)
        }
    }
    repositories {
        maven {
            url project.uploadRepo
            credentials {
                username project.uploadUserName
                password project.uploadUserPass
            }
        }
    }
}

然后在该工程的build.gradle中添加如下引用代码:

apply from: 'publish-maven.gradle'

1、本地执行maven发布脚本

2、命令行执行

cd到相应目录下

gradle publish -PMAVEN_BUILD_VERSION=${MAVEN_BUILD_VERSION} \

-PMAVEN_BUILD_TYPE=${MAVEN_BUILD_TYPE} \

-PMAVEN_GROUP_NAME=${MAVEN_TENCENT_VIDEO_GROUP} \

-PMAVEN_USERNAME=${MAVEN_USERNAME} \

-PMAVEN_TOKEN=${MAVEN_TOKEN}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值