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

如何从GCP Artifact Registry拉取Gradle版本目录?

解决方案

错误原因

你使用files()方法加载版本目录(Version Catalog),但该方法仅适用于本地文件系统,无法识别Maven仓库坐标或artifactregistry://协议,导致Gradle抛出协议不支持的错误。

修复步骤

  1. 调整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}")
        }
    }
}
  1. 确认GCP插件配置(若未添加)
    如果项目尚未应用GCP Artifact Registry插件,需在settings.gradle顶部添加插件配置,确保Gradle能处理artifactregistry://协议:
plugins {
    id 'com.google.cloud.artifactregistry.gradle-plugin' version '2.1.4' apply false
}
  1. 验证发布配置(针对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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:55:55