如何使用 kotlinscript DSL (build.gradle.kts) 通过 url 添加 maven 存储库

Posted

技术标签:

【中文标题】如何使用 kotlinscript DSL (build.gradle.kts) 通过 url 添加 maven 存储库【英文标题】:How to add a maven repository by url using kotlinscript DSL (build.gradle.kts) 【发布时间】:2018-06-22 20:53:57 【问题描述】:

build.gradle 中的build.gradle.kts 版本中的以下代码 sn-p 的等价物是什么?

repositories 
  mavenCentral()
  maven 
    url '<MAVEN REPO URL>'
  

【问题讨论】:

【参考方案1】:

作为对其他答案的补充,#kotlin-dsl/256 中的快捷方法已添加到各种存储库方法中,以执行以下操作:

repositories 
  mavenCentral()
  maven(url = "<MAVEN REPO URL>")

根据问题,这是在 Kotlin DSL 版本 0.11.1 中添加的。 0.11.x 版本包含在 Gradle 4.2 release 中。

要查看使用Gradle wrapper 运行./gradlew --version 时与您的构建一起运行的Gradle 版本。

【讨论】:

我们在谈论哪个版本?我正在使用 Kotlin 插件“1.2.10-release-IJ2017.3-1”和 Kotlin 版本“1.2.10”,并且您的语法产生以下错误“不能使用提供的参数调用以下函数”-那么如何检查您的版本?我不知道在哪里可以查看或获取此版本(用于 Gradle 的 Kotlin DSL)。我也没有任何待处理的插件更新。 @FlorianReisinger 我已经稍微更新了我的答案。您在构建中使用的 Kotlin 版本或插件(例如 id "org.jetbrains.kotlin.jvm" version "1.2.10"))与 Gradle 用于执行构建的 Kotlin 版本不同。 刚刚检查过,我有 4.0 Gracie 包装器 :)【参考方案2】:

在 2018-01-13,正确的语法如下(而不是 url,函数 setUrl):

repositories 
    mavenCentral()
    maven 
        setUrl("<MAVEN REPO URL>")
    

【讨论】:

【参考方案3】:

official doco 允许您在 Groovy 和 Kotlin DSL 之间切换示例。目前,您的问题列出的答案是:

repositories 
    mavenCentral()
    maven 
        url = uri("<MAVEN REPO URL>")
    

我需要添加带有身份验证的 Gitlab,它的语法更复杂。对于其他偶然发现这一点的人,这里是翻译成 kts/Kotlin 语法的官方 Gitlab 示例。

val gitLabPrivateToken: String by project

maven 
    url = uri("https://<gitlab-url>/api/v4/groups/<group>/-/packages/maven")
    name = "GitLab"
    credentials(HttpHeaderCredentials::class) 
        name = "Private-Token"
        value = gitLabPrivateToken
    
    authentication 
        create<HttpHeaderAuthentication>("header")
    

此处的示例 URL 适用于 Gitlab doco。但对我来说,它只适用于这样的 URL: https://gitlab.com/api/v4/projects/12345/packages/maven

【讨论】:

我正在寻找 Gitlab 示例的翻译,但不知道如何为 HttpHeaderAuthentication 翻译。非常感谢! 谢谢!这让我摆脱了试图从 GitLab 获取软件包的困境。 URL 问题是由一些 GitLab 的奇怪性(和错误的文档)引起的。您只能发布到项目注册表 URL,但您可以从组 URL 中读取。因此,您在发布时始终需要使用项目注册表(如您指定的那样),但在您的父项目中,只指定一次组 URL 会更容易。 正是我想要的【参考方案4】:

您可以按照官方docs通过以下方式添加自定义Maven URL:

repositories 
    maven 
        url = uri("<your-custom-url>")
    

【讨论】:

无法访问类“java.net.URI”。检查您的模块类路径是否存在缺失或冲突的依赖项

以上是关于如何使用 kotlinscript DSL (build.gradle.kts) 通过 url 添加 maven 存储库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 spring 集成 dsl 解组 xml

如何将 DSL.coalesce 与字段列表一起使用?

如何使用 Jenkins job dsl 为 gitlab 插件设置秘密令牌?

如何使用 gradle kotlin-dsl 添加新的源集

如何使用多种“设置”方法创建“更新”

Spring数据查询dsl如何添加订单?