如何为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č
相关产品推荐
相关产品推荐

