java - 在管道作业期间找不到托管在GitLab Maven存储库中的依赖项

标签 java maven gradle continuous-integration gitlab

我遇到一个很奇怪的问题。当我在计算机上构建插件时,一切正常。但是,当插件在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-IDbuild.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/

相关文章:

java - maven构建模块中的Jahia6.6部署错误

java - pom.xml 中的 JDBC Maven 依赖

android - Build.Gradle 中的库版本错误

java - Gradle/Jenkins JAR发布到GitHub

android - 如何在Android项目中使用Arrow Meta

java - 反转 HashMap

java - 如何决定在 Maven 中使用哪个插件?

java - 显示 2 个具有关系的不同实体表的数据表需要从数据库表中获取另一列值

java - 我尝试在 s40 手机上使用 Nokicert,但是当我在 cmd 中打开它时,出现异常错误

java - 在编译时禁用 Java 日志记录