Gradle从7.6.1升级到8.0.2后artifactoryPublish任务报错求助
解决Gradle 8.0.2中artifactoryPublish任务依赖项错误问题
问题原因
Gradle 8.0开始严格校验依赖配置的可解析性,archives配置被标记为canBeResolved=false,仅用于发布(canBeConsumed=true),无法直接被解析。你的配置中通过publishConfigs("archives")指定该配置,触发了Gradle的校验逻辑,导致报错。
解决方案
方案1:移除publishConfigs配置(推荐)
你已经通过publications("ALL_PUBLICATIONS")指定了发布的Maven出版物,无需额外指定publishConfigs。修改后的artifactory配置如下:
artifactory { setContextUrl(artifactoryContextUrl) publish { repository { setRepoKey("Deploy") setUsername(artifactoryUser) setPassword(artifactoryPassword) setMavenCompatible(true) } defaults { setPublishPom(true) setPublishIvy(false) setPublishArtifacts(true) publications("ALL_PUBLICATIONS") // 移除此行:publishConfigs("archives", "archives") } } resolve { repository { setRepoKey("Virtual") setUsername(artifactoryUser) setPassword(artifactoryPassword) setMaven(true) } } }
同时确保maven-publish插件已正确配置出版物(如果尚未配置):
publishing { publications { create<MavenPublication>("ALL_PUBLICATIONS") { from(components["java"]) // 按需配置groupId、artifactId、version // groupId = "com.your.group" // artifactId = "your-artifact" // version = "1.0.0" } } }
方案2:创建可解析的继承配置(备选)
如果必须保留publishConfigs,可以创建一个继承自archives的可解析配置:
// 在plugins块之后添加 val resolvableArchives by configurations.creating { extendsFrom(configurations.archives.get()) isCanBeResolved = true }
然后修改artifactory配置中的publishConfigs:
defaults { // ... 其他配置 publishConfigs("resolvableArchives") }
说明
方案1更符合现代Gradle发布规范,利用maven-publish的出版物机制管理发布内容,避免依赖配置的可解析性冲突。
内容的提问来源于stack exchange,提问作者Rodrigo Batista
相关产品推荐
相关产品推荐

