我正在使用Gradle将工件部署到Google的工件注册表
通常我会在"发布"中指定我想要部署构建工件的存储库。部分的build.gradle
文件-而不是这样做,我想在init.gradle
文件中定义存储库,该文件稍后将在ci进程中注入,这样工件注册表的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]
文档说明要在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。