如何解决无法使用gradle将jar发布到Gitlab软件包注册表 快速解答示例gradle配置kotlin-dsl更多信息
我正在尝试在gitlab软件包注册表上发布一些jar伪像,但我从服务器收到此错误:
Received status code 415 from server: Unsupported Media Type
这是我的build.gradle.kts的发布部分:
publishing {
publications {
create<MavenPublication>("maven"){
artifact(tasks["bootJar"])
}
}
repositories {
maven {
url = uri("https://gitlab.com/api/v4/groups/my-group/-/packages/maven")
name = "Gitlab"
credentials(HttpHeaderCredentials::class) {
name = "Token"
value = System.getenv("CI_JOB_TOKEN")
}
authentication {
create<HttpHeaderAuthentication>("header")
}
}
}
}
在我的gitlab-ci中,我添加了一个发布文物的任务:
deploy:
stage: deploy
script: gradle publish
only:
- master
任何帮助将不胜感激
解决方法
快速解答
将指向组范围的发布网址替换为指向特定包存储库的网址,例如在gitlab.com
上
https://gitlab.com/api/v4/projects/<your-project-id>/packages/maven
您当然需要用特定的项目ID替换<your-project-id>
。
与此相关的引文来自docs.gitlab:
注意:在所有情况下,您都需要一个特定于项目的URL,以便在distributionManagement部分中上传软件包。
或者换句话说:只有通用存储库部分可以使用您的groups-url来搜索其他已发布的工件! (我也必须明白这一点)。所以:
- 您无法发布到gitlab上的分组存储中,您只能在其中搜索。
- 发布始终转到特定于项目的软件包存储,然后在组范围内也将可见。
示例gradle配置(kotlin-dsl)
repositories {
mavenCenter()
jcenter()
// Here you USE the group api/v4 url for SEARCHING packages
maven {
name = "GitLab"
url = uri("https://gitlab.com/api/v4/groups/my-group/-/packages/maven")
credentials(HttpHeaderCredentials::class) {
name = "Job-Token"
value = System.getenv("CI_JOB_TOKEN")
}
authentication {
create<HttpHeaderAuthentication>("header")
}
}
}
publishing {
publications {
create<MavenPublication>("maven"){
artifact(tasks["bootJar"])
}
}
repositories {
maven {
// here your PROVIDE the PROJECT-URI for publishing your package
// in the project-specific package-space which is also visible at
// the group scope above
url = uri("https://gitlab.com/api/v4/projects/<your-project-id>/packages/maven")
name = "Gitlab"
credentials(HttpHeaderCredentials::class) {
name = "Job-Token"
value = System.getenv("CI_JOB_TOKEN")
}
authentication {
create<HttpHeaderAuthentication>("header")
}
}
}
}
更多信息
关于如何与GitLab上的maven-repository-space进行交互,有多种方案。这三个开关是:
- 要查找现有发布的软件包的位置
- project-scope(
https://.../api/v4/projects/<project-id>/packages/maven
) - group-scope(
https://.../api/v4/groups/<group-id>/-/packages/maven
) - instance-scope(
https://.../api/v4/packages/maven
)
- project-scope(
- 您要使用的授权方法
- 您想去的地方publish your package
- 这必须始终是特定的项目网址(
https://.../api/v4/projects/<project-id>/packages/maven
)
- 这必须始终是特定的项目网址(
我认为最重要的是确保您已在项目中启用存档:
- 转到项目设置
- 扩展权限
- 打开“包”
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。