如何在初始化文件中定义要发布到的工件注册库?



我正在使用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。

相关内容

  • 没有找到相关文章

最新更新