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

如何在Gradle脚本中获取maven-publish生成的完整构件名称?

获取Maven-Publish发布的完整构件名称

当然可以实现!在使用Gradle的maven-publish插件时,不管是正式release版本还是带时间戳的SNAPSHOT版本,你都能在脚本里拿到最终生成的完整构件名称。

核心思路是访问发布配置(Publication)里的构件信息——Gradle在处理SNAPSHOT发布时,会自动生成带时间戳和build编号的构件文件,此时构件的file.name属性就是最终的完整名称。

示例实现

假设你的maven发布配置如下:

publishing {
    publications {
        maven(MavenPublication) {
            from components.java
            // 如果有额外构件(比如源码包)也会被包含
            artifact sourceJar
        }
    }
}

你可以添加一个自定义任务来打印或使用这些构件名称:

task logPublishedArtifacts {
    doLast {
        // 遍历当前maven发布配置下的所有构件
        publishing.publications.maven.artifacts.each { artifact ->
            def fullName = artifact.file.name
            println "最终发布的构件名称:$fullName"
            // 这里可以把fullName用于其他逻辑,比如记录到文件、通知等
        }
    }
}

// 让这个任务依赖于发布任务,确保构件已经生成
publish.dependsOn logPublishedArtifacts

直接在发布任务中获取

如果你想在发布动作执行时直接获取,也可以监听PublishToMavenRepository类型的任务:

tasks.withType(PublishToMavenRepository) {
    doLast {
        println "本次发布的构件列表:"
        publication.artifacts.each { artifact ->
            println "- ${artifact.file.name}"
        }
    }
}

说明

  • 对于正式release版本,artifact.file.name就是和项目版本一致的名称(比如foo-1.2.3.zip);
  • 对于SNAPSHOT版本,这个值会自动变成带时间戳和build号的完整名称(比如foo-1.2.4-20220427.094127-1.zip);
  • 要确保任务执行时机正确——必须在Gradle完成构件生成之后(也就是发布流程的后期),才能拿到正确的文件名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 18:07:39