如何从GCP Artifact Registry拉取Gradle版本目录?
解决方案
错误原因
你使用files()方法加载版本目录(Version Catalog),但该方法仅适用于本地文件系统,无法识别Maven仓库坐标或artifactregistry://协议,导致Gradle抛出协议不支持的错误。
修复步骤
- 调整Version Catalog加载语法
移除files()包裹,直接使用Maven坐标作为from()的参数,Gradle会自动从你已配置的GCP Artifact Registry仓库拉取构件:
dependencyResolutionManagement { repositories { mavenCentral() maven { url "${gcp_artifacts_base_url}/{my_maven_artifacts_pkg}" } gradlePluginPortal() } versionCatalogs { libs { // 直接使用Maven坐标,无需files()包裹 from("${my.groupId}:${my.artifactId}:${my.version}") } } }
- 确认GCP插件配置(若未添加)
如果项目尚未应用GCP Artifact Registry插件,需在settings.gradle顶部添加插件配置,确保Gradle能处理artifactregistry://协议:
plugins { id 'com.google.cloud.artifactregistry.gradle-plugin' version '2.1.4' apply false }
- 验证发布配置(针对common-build项目)
确保common-build项目将libs.versions.toml作为Version Catalog构件发布,示例发布配置(在common-build的build.gradle中):
plugins { id 'version-catalog' id 'maven-publish' id 'com.google.cloud.artifactregistry.gradle-plugin' version '2.1.4' } publishing { publications { maven(MavenPublication) { from components.versionCatalog groupId = '你的groupId' artifactId = 'common-build' version = '你的版本号' } } repositories { maven { url "artifactregistry://us-maven.pkg.dev/{你的项目ID}/{你的仓库名}" } } }
关键说明
- Version Catalog作为Maven构件发布后,无需特殊协议处理,Gradle会通过你配置的仓库地址自动拉取。
- 你之前能正常拉取其他构件,说明GCP认证和仓库配置已生效,仅需调整Version Catalog的加载语法即可解决问题。
内容的提问来源于stack exchange,提问作者Ebad
相关产品推荐
相关产品推荐

