如何在 init 文件中定义要发布到的 Artifact Registry 存储库?

How to define the Artifact Registry repository to publish to in the init file?

我正在使用 Gradle 将工件部署到 Google 的工件注册表。

通常我会在 build.gradle 文件的“发布”部分中指定要将构建的工件部署到的存储库 - 而不是那样做,我想在 [= =14=] 文件,稍后将在 CI-process 中注入,这样 Artifact Registry 的 URL 就不会最终出现在 Git 存储库中。

我想出一个方法是这样的:

allprojects{  
    buildscript {
        repositories {
            maven {
                url "artifactregistry://random-location.pkg.dev/project-name/repository-name"
            }
        }
    }
    repositories {
        maven {
            url "artifactregistry://random-location.pkg.dev/project-name/repository-name"
        }
    }
}

但是因为我需要 Artifact Registry Gradle 插件,所以我收到 artifactregistry 不是受支持协议的错误。

> Could not resolve all dependencies for configuration ':classpath'.
   > Not a supported repository protocol 'artifactregistry': valid protocols are [file, http, https, gcs, s3, sftp]

The docs state that要使用init.gradle中的插件,需要插入以下内容:

initscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "gradle.plugin.com.google.cloud.artifactregistry:artifactregistry-gradle-plugin:2.1.1"
  }
}
apply plugin: com.google.cloud.artifactregistry.gradle.plugin.ArtifactRegistryGradlePlugin

但我似乎无法让它发挥作用。我一定已经尝试了这两个片段的任何可能组合,但我已经无能为力了。

如果有人能告诉我如何安排这两个片段,以便我可以在 init.gradle 文件中指定要发布到的存储库(或者可能有一种完全不同的方法),那就是非常有帮助!

更新:我找到了让它工作的方法。

我没有指定发布存储库,而是在 init.gradle 文件中定义了一个变量:

allprojects {
    ext.repositoryURL = "artifactregistry://random-location.pkg.dev/project-name/repository-name"
}

我后来在构建脚本中使用了它:

publishing {
    ...
    repositories {
        maven {
            url repositoryURL
        }
    }
}

这样我以后仍然可以注入 init.gradle 文件以指定注册表 URL.