AGP 8.0+ Publish
分享一个脚本
apply plugin: 'maven-publish'
def projectPath = project.projectDir.toString()
def divPath = projectPath.replace(rootProject.projectDir.toString(), "").replace(File.separator, ".").replaceFirst("\\.", "")
def lastDotIndex = divPath.lastIndexOf(".")
def groupIdStart = "com.hangox.android"
if (lastDotIndex != -1) {
def packageName = divPath.substring(0, lastDotIndex)
group = "${groupIdStart}.${packageName}"
} else {
group = groupIdStart
}
def artifactIdName = project.name
// 增加时间戳,避免版本冲突
def bigVersion = "1.0.0"
def timestamp = new Date().format("yyyyMMddHHmmss")
version = "$bigVersion-${timestamp}"
tasks.register("sourcesJar", Jar) {
archiveClassifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
android {
publishing {
singleVariant("release")
singleVariant("debug")
}
}
afterEvaluate {
publishing {
publications {
release(MavenPublication) {
from components.release
artifact sourcesJar
artifactId = artifactIdName
}
debug(MavenPublication) {
from components.debug
artifact sourcesJar
artifactId = artifactIdName
}
}
repositories {
maven {
name "ProjectLocal"
def repos = new File(rootProject.buildDir, "repos")
url repos.absolutePath
}
def customReposLocation = rootProject.getProperties()["custom.repos.path"]
if (customReposLocation) {
maven {
name "CustomRepos"
def repos = new File(customReposLocation)
url repos.absolutePath
}
}
}
}
}
// 在所有 PublishToMavenRepository 类型的任务中加入 doLast 回调,在任务结束后打印发布的信息
tasks.withType(PublishToMavenRepository).configureEach {
doLast {
def repositoryName = it.repository.name
def displayName = "${project.group}:${artifactIdName}"
project.logger.lifecycle("=================================发布 ${displayName} 完成==========================================")
project.logger.lifecycle("发布到的 maven 仓库(${repositoryName}) 信息为: ${project.group}:${artifactIdName}:${project.version}")
project.logger.lifecycle("=================================发布 ${displayName} 完成==========================================")
}
}

浙公网安备 33010602011771号