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

Maven无法使用本地.m2仓库Snapshot依赖的问题求助

解决Spring Boot本地Snapshot依赖无法导入类的问题

核心原因

Spring Boot默认的spring-boot-maven-plugin打包生成的是可执行Jar,类文件被放在BOOT-INF/classes目录下,普通Maven依赖无法直接读取这个路径下的类,这是导致Service2找不到Service1中util包的主要原因。

具体解决步骤

1. 调整Service1的Maven打包配置

修改Service1的pom.xml,让Maven同时生成可执行Jar(用于运行Service1)和普通Jar(用于被其他服务依赖):

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!-- 指定classifier,生成的普通Jar会命名为service-1-0.0.1-SNAPSHOT.jar,可执行Jar为service-1-0.0.1-SNAPSHOT-exec.jar -->
                <classifier>exec</classifier>
            </configuration>
        </plugin>
    </plugins>
</build>

如果Service1只是工具模块(不需要独立运行),可以直接移除Spring Boot的打包插件,改为普通Maven模块打包。

2. 重新发布Service1到本地Maven仓库

在Service1的项目根目录执行命令:

mvn clean install

执行完成后,检查本地.m2仓库中com/example/service-1/0.0.1-SNAPSHOT目录下是否生成了对应Jar文件,解压Jar确认com/example/util/UtilClass.class文件直接位于Jar根目录下(而非BOOT-INF/classes内)。

3. 修正Service2的依赖配置

确保Service2的pom.xml中依赖配置与Service1的坐标完全一致:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>service-1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

4. 刷新IntelliJ的依赖与缓存

  • 点击右侧Maven面板的刷新图标,让IntelliJ重新加载依赖;
  • 执行mvn clean compile命令,触发Maven编译;
  • 若仍有问题,执行File -> Invalidate Caches... -> Invalidate and Restart清除IntelliJ缓存并重启。

5. 检查类的访问权限

确认Service1中的UtilClass.java是public修饰的:

package com.example.util;

public class UtilClass {
    // 类内容
}

默认包访问权限(无public)的类无法被其他模块访问。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 00:52:51