如何使用 API 密钥访问 gradle 中 artifactory 上的 Maven 存储库?

How to access a maven repo on artifactory in gradle using API key?

我们有一个包含 maven 存储库(和其他元素)的 JFrog 工件。

在我的 gradle 设置中,我定义了这个:

repositories {
    maven {
        url = uri("https://eu.artifactory....../whatever/")    
        credentials {
            username = "my-full-user-id"
            password = "my-real-password"
        }
    }
}

工作正常。它 在我更改密码输入以使用我的 JFrog API KEY.

时起作用

但是:只有当 username 包含我的真实用户 ID 时,才能使用 api 密钥。

鉴于:当“直接”向 JFrog 发出 https 请求时(例如使用 python 脚本),不需要 提供用户名:只需在请求 header 中包含 API KEY 就足够了。

问题是:在我们的设置中,我们手边有 API 键,但没有用户 ID。所以我希望能够在 gradle 中定义一个无需用户名即可工作的 Maven 依赖项。

但是当

问题:是否可以在 gradle 中使用与 API KEYS 一起使用并且不需要相应用户 ID 的“maven 样式”存储库定义?

Artifactory 支持基于 header 的身份验证,您可以在 header X-JFrog-Art-Api 中提供 API 密钥(参见 Artifactory REST API). I do not have an Artifactory instance at hand to test, but Gradle's HTTP header authentication 应该可以解决问题:

repositories {
    maven {
        url = uri("http://repo.mycompany.com/maven2")
        credentials(HttpHeaderCredentials::class) {
            name = "Private-Token"
            value = "TOKEN"
        }
        authentication {
            create<HttpHeaderAuthentication>("header")
        }
    }
}