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

无法从GitLab Package Registry导入Maven依赖问题

问题原因

该问题和GitLab/GitHub Package Registry的权限、仓库配置无关,核心原因是上传到包仓库的源项目产物是Spring Boot可执行fat jar,不是可供其他项目依赖的标准Maven jar包。
Spring Boot默认的spring-boot-maven-plugin打包生成的可执行jar,会把所有业务类放到BOOT-INF/classes/路径下,第三方依赖放到BOOT-INF/lib/路径下,不符合Maven依赖jar的标准目录结构(标准jar的业务类直接放在包路径根目录下)。Maven和IDEA只要能根据坐标下载到对应jar文件,就会在依赖列表中识别到该依赖,不会校验jar内部结构,因此会出现依赖可见但类无法导入的现象,无论把包上传到哪个公有/私有仓库都会出现同样问题。

解决方法

1. 修改源项目打包配置,生成可供依赖的标准jar

在源项目pom.xml的spring-boot-maven-plugin配置中添加执行节点,让打包时同时生成可执行fat jar和标准依赖jar:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </exclude>
                </excludes>
            </configuration>
            <!-- 新增以下配置 -->
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                    <configuration>
                        <classifier>exec</classifier>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

配置完成后执行mvn deploy上传时会生成两个产物:

  • 带exec分类符的是原Spring Boot可执行fat jar,用于直接启动服务
  • 不带分类符的是符合Maven规范的普通jar,类路径结构正确,可供其他项目作为依赖引用

2. 补全目标项目的Maven配置

  • 确认目标项目使用的Mavensettings.xml中,已经配置了和仓库id完全匹配的认证信息(即你之前配置的Private-Token,server的id必须和仓库配置的id一致,均为gitlab-maven)
  • 在目标项目pom.xml中添加GitLab Maven仓库配置,仅添加依赖坐标不配置仓库会导致依赖拉取异常:
<repositories>
    <repository>
        <id>gitlab-maven</id>
        <url>https://gitlab.com/api/v4/projects/37087069/packages/maven</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

3. 清理缓存重新拉取依赖

  • 删除本地Maven仓库路径下之前拉取的错误版本缓存,即com/elmojke/issue-tracker整个目录
  • 源项目重新执行mvn deploy上传新生成的合规jar包
  • 目标项目执行mvn clean install -U强制拉取最新版本依赖,刷新IDEA的Maven项目后即可正常导入使用依赖中的类

补充:如果源项目的定位就是公共依赖库,更推荐直接创建普通Maven Java项目,仅引入需要的Spring组件依赖,不需要配置Spring Boot可执行打包逻辑,从根源上避免jar结构不符合规范的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:45:41