You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab Pipeline执行unit_test任务时Maven依赖查找失败求助

问题:GitLab Pipeline中Maven无法解析GitLab Package Registry中的依赖

执行unit_test任务时出现以下错误:

Failed to execute goal on project backend: Could not resolve dependencies for project <my_package>:backend:jar:1.0.0-SNAPSHOT: Could not find artifact <my_package>:minio-service-spring-boot-starter:jar:1.0.0 in gitlab-maven (...) -> [Help 1]

该artifact已成功上传至GitLab Package Registry,版本为1.0.0,项目使用Maven构建,相关配置如下:

相关配置

pom.xml片段

<dependencies>
//...
  <!-- MinIO Service Starter -->
        <dependency>
            <groupId>net.project.crm</groupId>
            <artifactId>minio-service-spring-boot-starter</artifactId>
            <version>${minio-service-starter.version}</version>
        </dependency>
    </dependencies>

 <!-- GitLab Package Registry -->
    <repositories>
        <repository>
            <id>gitlab-maven</id>
            <url>https://gitlab.com/api/v4/projects/MY_ID/packages/maven</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <distributionManagement>
        <repository>
            <id>gitlab-maven</id>
            <url>https://gitlab.com/api/v4/projects/MY_ID/packages/maven</url>
        </repository>

        <snapshotRepository>
            <id>gitlab-maven</id>
            <url>https://gitlab.com/api/v4/projects/MY_ID/packages/maven</url>
        </snapshotRepository>
    </distributionManagement>

ci-settings.xml(项目根目录)

<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0
          https://maven.apache.org/xsd/settings-1.2.0.xsd">
    <servers>
        <server>
            <id>gitlab-maven</id>
            <username>gitlab-ci-token</username>
            <password>${CI_JOB_TOKEN}</password>
        </server>
    </servers>

</settings>

GitLab Pipeline任务配置

unit_test:
  stage: test
  image:
    name: maven:3.8-openjdk-17-slim
  artifacts:
    paths:
      - target/surefire-reports/
    reports:
      junit: target/surefire-reports/*.xml
    expire_in: 2 days
  cache:
    key: "maven-repo"
    paths:
      - .m2/repository/
    policy: pull-push
  script:
    - mvn -P!checkstyle clean test --settings=ci-settings.xml
  rules:
    - if: $CI_COMMIT_REF_PROTECTED == 'false'

排查与解决步骤

1. 验证依赖坐标一致性

  • 检查错误信息中<my_package>与pom.xml里的groupId(net.project.crm)是否完全匹配,确认MinIO starter的实际groupId是否正确。
  • 确认${minio-service-starter.version}变量值是否为1.0.0,检查pom.xml的<properties>或父pom中的变量定义。

2. 检查GitLab项目ID与跨项目权限

  • 确认pom.xml中repository URL的MY_ID是MinIO starter所在项目的数字ID(不是项目路径名)。
  • 若两个项目为不同仓库:
    • 在MinIO starter项目的设置→权限→项目访问中,添加当前项目为成员,赋予至少开发者权限。
    • 在MinIO starter项目的设置→CI/CD→令牌权限中开启「允许作业令牌访问此项目」,同时在当前项目的CI/CD设置中开启「允许作业令牌访问其他项目」。

3. 清理Maven缓存

缓存可能存在旧的无效依赖记录,可临时调整缓存策略或清理指定依赖:

  • 修改缓存策略为仅拉取:
    cache:
      key: "maven-repo"
      paths:
        - .m2/repository/
      policy: pull
    
  • 或在script中添加清理命令:
    - rm -rf .m2/repository/net/project/crm/minio-service-spring-boot-starter
    - mvn -P!checkstyle clean test --settings=ci-settings.xml
    

4. 验证Maven仓库配置与令牌有效性

  • 可在ci-settings.xml中添加mirror配置,确保所有请求走GitLab仓库:
    <mirrors>
      <mirror>
        <id>gitlab-maven</id>
        <url>https://gitlab.com/api/v4/projects/MY_ID/packages/maven</url>
        <mirrorOf>*</mirrorOf>
      </mirror>
    </mirrors>
    
  • 临时在script中添加echo ${CI_JOB_TOKEN}验证变量是否正常传递(测试后移除,避免泄露令牌)。

5. 本地手动测试拉取

在本地使用ci-settings.xml执行命令,验证依赖能否正常拉取:

mvn dependency:get -Dartifact=net.project.crm:minio-service-spring-boot-starter:1.0.0 --settings=ci-settings.xml

内容的提问来源于stack exchange,提问作者MAGistr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:24:52