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} 完成==========================================")
    }
}
posted @ 2025-06-23 16:55  hangox  阅读(15)  评论(0)    收藏  举报