我遇到一个很奇怪的问题。当我在计算机上构建插件时,一切正常。但是,当插件在GitLab的管道中构建时,构建失败,因为未找到依赖项。
Caused by: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find any matches for fr.group:theplugin:5.0.+ as no versions of fr.group:theplugin are available.
Searched in the following locations:
- https://gitlab.com/api/v4/groups/GROUP-ID/-/packages/maven/fr/group/theplugin/maven-metadata.xml
我正在使用GitLab的Maven存储库(软件包注册表)来托管我自己的minecraft插件的伪像。找不到的依赖项托管在程序包注册表中。我试图删除所有的gradle缓存,然后再次在计算机上进行构建。该依赖项已按预期下载。因此,这使我说该伪像在软件包注册表中可用。我安装的gradle版本与包装器相同(等级6.5.1)。我还尝试在计算机上运行包装器,以防万一,它也可以正常工作。
这是我的
build.gradle
:// Build plugins
plugins {
id 'maven-publish'
id 'java'
}
// Upstream Maven repositories
repositories {
mavenCentral()
maven {//Dependencies on the Gitlab's group
url "https://gitlab.com/api/v4/groups/GROUP-ID/-/packages/maven"
name "GitLab"
credentials(HttpHeaderCredentials) {
name = 'Private-Token'
value = gitLabPrivateToken
}
authentication {
header(HttpHeaderAuthentication)
}
}
}
group = 'fr.mygroup'
version = 1.0.0
dependencies {
compileOnly group: 'fr.group', name:'theplugin', version: '5.0.+', transitive: false
}
compileJava {
sourceCompatibility = '1.8'
options.encoding = 'UTF-8'
}
// Maven publish
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
repositories {
maven {
url "https://gitlab.com/api/v4/projects/PROJECT-ID/packages/maven"
credentials(HttpHeaderCredentials) {
name = "Private-Token"
value = gitLabPrivateToken
}
authentication {
header(HttpHeaderAuthentication)
}
}
}
}
当然,我已经在真正的GROUP-ID
中替换了PROJECT-ID
和build.gradle
。这是我的.gitlab-ci.yml:
image: java:8
before_script:
- chmod +x gradlew
stages:
- build
- test
- publish
# Build stage
build:
only:
- tags
tags:
- docker
stage: build
script:
- ./gradlew -g /cache/.gradle clean assemble -PgitLabPrivateToken=$CI_CUSTOM_TOKEN
allow_failure: false
# Use the generated build output to run the tests.
test:
only:
- tags
tags:
- docker
stage: test
script:
- ./gradlew -g /cache/.gradle check -PgitLabPrivateToken=$CI_CUSTOM_TOKEN
# Publish the artifact to GitLab
publish:
only:
- tags
tags:
- docker
stage: publish
script:
- ./gradlew -g /cache/.gradle clean publish -PgitLabPrivateToken=$CI_CUSTOM_TOKEN
CI_CUSTOM_TOKEN
环境变量包含个人访问 token ,该 token 具有GitLab帐户的范围api,该帐户至少是相关GitLab组中的维护者(也许我不记得所有者)。我试图在女巫中创建一个新的GitLab组,我克隆了我要构建的插件,创建了相同的
CI_CUSTOM_TOKEN
环境变量,然后运行了一个管道,它运行良好。如果有不清楚的地方或需要更多信息,请告诉我。
感谢您的阅读和帮助(我希望)
祝你今天愉快 !
最佳答案
问题是在CI_CUSTOM_TOKEN
环境变量中检查了选项Protect变量。因此,该变量未传递到由不 protected 标签触发的管道。奇怪的是我应该有一个权限错误或类似的东西,但是它只是说找不到依赖项。
无论如何,我没有选中该选项,现在可以正常使用了。
关于java - 在管道作业期间找不到托管在GitLab Maven存储库中的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63331384/