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

Maven未下载依赖库POM中声明的传递依赖问题求助

可能原因

  • 你的Spring Boot库用了spring-boot-maven-plugin打包成可执行Jar:这种打包方式会把依赖嵌入Jar内部,但发布到本地仓库的pom.xml不会正确声明传递依赖,导致主项目无法识别这些依赖。
  • 库中依赖的scope设置错误:比如把jjwt这类依赖的scope设为provided、test或者optional,Maven默认不会将这些scope的依赖传递到主项目。
  • 主项目的pom.xml中主动排除了相关传递依赖:可能你在引入库的时候加了<exclusions>标签,无意中排除了jjwt这类依赖。
  • 本地仓库中库的pom.xml不完整:虽然你清理过本地仓库,但重新install库的时候可能出现异常,导致生成的pom.xml缺少传递依赖的声明。

解决方法

  1. 调整库的打包方式(关键)
    如果你的库是作为依赖被其他项目引入,不要打包成可执行Jar。修改库的pom.xml中的spring-boot-maven-plugin配置:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!-- 禁用可执行Jar打包,生成普通Jar作为库 -->
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    或者如果需要保留插件的其他功能,使用repackage目标并设置classifier:

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <executions>
            <execution>
                <goals>
                    <goal>repackage</goal>
                </goals>
                <configuration>
                    <!-- 生成普通Jar(无classifier)用于依赖,可执行Jar带classifier -->
                    <classifier>exec</classifier>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    修改后重新执行mvn clean install发布库到本地仓库。

  2. 检查依赖的scope设置
    打开库的pom.xml,确认jjwt等传递依赖的scope是默认的compile(可以不写,默认就是compile),不要设置为provided、test或optional。例如:

    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-api</artifactId>
        <version>0.11.5</version>
        <!-- 不要加scope,或者明确写scope="compile" -->
    </dependency>
    
  3. 检查主项目的依赖排除
    查看主项目中引入你的库的依赖配置,确保没有<exclusions>标签排除了jjwt相关依赖:

    <dependency>
        <groupId>你的库groupId</groupId>
        <artifactId>你的库artifactId</artifactId>
        <version>你的库版本</version>
        <!-- 移除不必要的exclusions -->
        <!-- <exclusions>
            <exclusion>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-api</artifactId>
            </exclusion>
        </exclusions> -->
    </dependency>
    
  4. 重新发布完整的库到本地仓库
    先彻底删除本地仓库中你的库对应的目录(比如~/.m2/repository/你的groupId/你的artifactId/),然后进入每个库的目录,执行mvn clean install,确保打包过程没有报错,生成的pom.xml在本地仓库中存在且包含完整的依赖声明。

  5. 验证依赖传递
    在主项目目录执行mvn dependency:tree命令,查看输出中是否包含jjwt相关依赖。如果还是没有,检查输出中你的库节点下是否有对应的依赖项,以此定位问题所在。

内容的提问来源于stack exchange,提问作者tarun preet Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:12:13