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

如何为Gradle中由publishing配置生成的所有发布任务设置超时时间?

如何为Gradle Publishing生成的所有发布任务设置超时时间?

嘿,我来帮你搞定这个问题!你之前在MavenPublication里直接加timeout不生效,核心原因是**MavenPublication只是发布的配置对象,不是实际执行的任务**——Gradle的publishing插件会根据你的publication和仓库配置,自动生成多个独立的发布任务(比如publishMavenPublicationToNexusRepository这类命名的任务),这些任务才是真正执行发布操作的主体,所以得直接针对它们来设置超时。

正确的配置方式

你可以用Gradle的任务类型匹配器,一次性为所有发布相关的任务统一设置超时。具体代码如下:

publishing {
    publications {
        maven(MavenPublication) {
            groupId = 'org.gradle.sample'
            artifactId = 'library'
            version = '1.1'
            from components.java
        }
    }
    // 这里可以补充你的Nexus仓库配置
    repositories {
        maven {
            url = uri("https://your-nexus-repo-url")
            // 按需添加认证信息等配置
        }
    }
}

// 为所有远程Maven发布任务设置超时
tasks.withType(PublishToMavenRepository) {
    timeout = Duration.ofMinutes(25)
}

扩展:包含本地发布任务

如果你连发布到本地Maven仓库的任务(比如publishToMavenLocal)也想设置超时,可以同时匹配PublishToMavenLocal类型:

tasks.withType(PublishToMavenRepository, PublishToMavenLocal) {
    timeout = Duration.ofMinutes(25)
}

原理说明

  • PublishToMavenRepository是所有远程Maven发布任务的父类型,Gradle会为每个publication和远程仓库的组合生成一个该类型的任务;
  • PublishToMavenLocal是发布到本地Maven仓库的任务类型;
  • tasks.withType()会自动匹配所有对应类型的任务,不管它们的具体名称是什么,这样就能一次性给所有发布任务统一配置超时了。

内容的提问来源于stack exchange,提问作者Martin Tlachač

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:37:52