You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Gradle生成含Maven构件的Zip包适配Sonatype新系统?

用Gradle生成Sonatype手动上传所需的构件Zip包

当然可以实现,直接用Gradle自带的Zip任务就能搞定,核心思路是把Maven发布流程中生成的所有构件(jar、pom、源码包、文档包等)都打包到Zip里就行,以下是具体配置:

前提准备

确保你的项目已经配置了maven-publish插件,并且能正常生成所需的构件(主jar、pom、sources jar、javadoc jar等)。

Groovy DSL 配置示例

plugins {
    id 'java'
    id 'maven-publish'
}

// 配置Maven发布信息,生成基础构件
publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
            // 引入sources和javadoc jar(如果需要)
            artifact sourcesJar
            artifact javadocJar
        }
    }
}

// 自定义生成sources jar的任务
task sourcesJar(type: Jar) {
    from sourceSets.main.allJava
    archiveClassifier.set('sources')
}

// 自定义生成javadoc jar的任务
task javadocJar(type: Jar) {
    from javadoc
    archiveClassifier.set('javadoc')
}

// 核心任务:生成Sonatype上传用的Zip包
task sonatypeUploadZip(type: Zip) {
    // 自定义Zip包名称,建议包含项目名和版本号
    archiveName = "${project.name}-${project.version}-sonatype-upload.zip"
    // 指定Zip包输出目录
    destinationDirectory.set(file("$buildDir/distributions"))

    // 包含Maven发布的所有构件文件
    from publishing.publications.mavenJava.artifacts.files

    // 可选:把pom.xml单独放在Zip根目录(匹配Sonatype的上传要求)
    into('') {
        from publishing.publications.mavenJava.pom
    }
}

// 确保Zip任务执行前,所有构件都已生成
sonatypeUploadZip.dependsOn publishToMavenLocal

Kotlin DSL 配置示例

plugins {
    java
    `maven-publish`
}

publishing {
    publications {
        create<MavenPublication>("mavenJava") {
            from(components["java"])
            artifact(tasks["sourcesJar"])
            artifact(tasks["javadocJar"])
        }
    }
}

tasks.register<Jar>("sourcesJar") {
    from(sourceSets.main.get().allJava)
    archiveClassifier.set("sources")
}

tasks.register<Jar>("javadocJar") {
    from(tasks.javadoc)
    archiveClassifier.set("javadoc")
}

tasks.register<Zip>("sonatypeUploadZip") {
    archiveName = "${project.name}-${project.version}-sonatype-upload.zip"
    destinationDirectory.set(file("$buildDir/distributions"))

    from(publishing.publications.named<MavenPublication>("mavenJava").get().artifacts.files)

    // 可选:将pom.xml放在Zip根目录
    into("") {
        from(publishing.publications.named<MavenPublication>("mavenJava").get().pom)
    }
}

// 依赖构件生成任务,确保打包前构件就绪
tasks.named<Zip>("sonatypeUploadZip") {
    dependsOn(tasks.publishToMavenLocal)
}

使用方式

在项目根目录执行:

  • Linux/macOS:./gradlew sonatypeUploadZip
  • Windows:gradlew.bat sonatypeUploadZip

生成的Zip包会输出到build/distributions目录下,里面包含了所有Sonatype手动上传需要的构件。如果你的项目有额外的构件(比如GPG签名文件),只需在sonatypeUploadZip任务中添加对应的文件路径即可。

内容的提问来源于stack exchange,提问作者Johann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 06:35:57