在要发布的工程中添加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}