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

108

以下代码片段在 build.gradle 中的对应项在 build.gradle.kts 版本中该怎么写?

repositories {
  mavenCentral()
  maven {
    url '<MAVEN REPO URL>'
  }
}
4个回答

181

除了其他答案之外,在#kotlin-dsl/256中添加了各种仓库方法的快捷方式,以执行以下操作:

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

根据问题,这是在Kotlin DSL版本0.11.1中添加的。 Gradle 4.2 release包含了0.11.x版本。
使用Gradle wrapper运行./gradlew --version以查看您构建时正在运行的Gradle版本。

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

50

官方文档允许您在Groovy和Kotlin DSL之间切换示例。目前,该文档对你的问题给出的答案如下:

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

我需要添加带有认证的Gitlab,其语法更加复杂。对于其他遇到此问题的人,这是官方Gitlab示例转换为kts/Kotlin语法的翻译。

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文档的要求。但是对我来说,它只在以下网址有效:

https://gitlab.com/api/v4/projects/12345/packages/maven

我正在寻找Gitlab示例的翻译,但无法弄清如何对HttpHeaderAuthentication进行翻译。非常感谢! - monsterkrampe
谢谢!这让我摆脱了从GitLab获取软件包的困境。URL问题是由于一些GitLab的奇怪行为(和糟糕的文档)引起的。您只能发布到项目注册表URL,但可以从组URL读取。因此,在发布时始终需要使用项目注册表(如您所指定的那样),但在父项目中,只需一次指定组URL即可更容易地完成。 - CatalinM
正是我所寻找的。 - Rainmaker
如何编写凭据块是我所需要的。 - Chris

30

在2018年1月13日,正确的语法如下(使用函数setUrl而不是url):


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

10

根据官方文档,您可以按照以下方式添加自定义的Maven URL:

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

无法访问类'java.net.URI'。请检查模块类路径以查找缺少或冲突的依赖项。 - StuartDTO

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接