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

使用Maven-Shade-Plugin构建时引入旧版本依赖问题排查

排查Maven Shade Plugin引入旧版依赖的问题

我来帮你分析下这个问题,首先明确一点:Maven Shade Plugin本身不会主动引入旧版本依赖,问题根源肯定是依赖树里存在冲突的版本,而Maven的依赖调解规则选中了旧版本。下面是一步步的排查和解决方法:

第一步:定位旧版本依赖的来源

你需要先搞清楚这些旧版本的Flyway和PostgreSQL是从哪个依赖引入的,这是解决问题的关键。运行下面的Maven命令,生成这两个依赖的详细依赖树:

mvn dependency:tree -Dverbose -Dincludes=org.flywaydb:flyway-core,org.postgresql:postgresql

这个命令会过滤出只和这两个依赖相关的路径,你能清楚看到哪个间接依赖引入了3.2.1和9.4.1212.jre7版本。

常见原因及解决方法

1. 间接依赖引入了旧版本

如果依赖树显示某个第三方库引入了旧版本,你可以在ModuleA的pom.xml里排除该库的旧版依赖:
比如发现com.old.dep:legacy-lib引入了旧版Flyway,就这么做:

<dependency>
  <groupId>com.old.dep</groupId>
  <artifactId>legacy-lib</artifactId>
  <version>x.y.z</version>
  <exclusions>
    <exclusion>
      <groupId>org.flywaydb</groupId>
      <artifactId>flyway-core</artifactId>
    </exclusion>
    <exclusion>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
    </exclusion>
  </exclusions>
</dependency>

2. Maven依赖调解规则导致旧版本被选中

Maven默认会选择路径最短的依赖版本,如果路径长度相同,会选择pom里先声明的版本。如果Core模块的依赖路径和某个旧版本的路径长度一致,且旧版本被先声明,就会出现这个问题。

解决方法是在ModuleA的pom.xml里添加dependencyManagement,强制指定你需要的版本:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.flywaydb</groupId>
      <artifactId>flyway-core</artifactId>
      <version>5.2.4</version>
    </dependency>
    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>42.2.6</version>
    </dependency>
  </dependencies>
</dependencyManagement>

这个配置会覆盖所有依赖路径中的版本,强制Maven使用你指定的版本。

3. Core模块未正确安装到本地仓库

如果Core模块的最新版本(包含正确的依赖版本)没有被安装到本地Maven仓库,ModuleA可能会拉取旧的SNAPSHOT版本或者错误的版本。先在Core模块的根目录运行:

mvn clean install

确保Core的最新版本被安装,然后再构建ModuleA。

额外检查点

你在Shade Plugin里依赖了spring-boot-maven-plugin,如果你的ModuleA继承了Spring Boot Parent,要注意Spring Boot的依赖管理会不会覆盖你的版本。不过从你给出的旧版本号来看,应该不是这个原因,但可以检查下Spring Boot Parent的dependencyManagement里有没有相关版本配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 09:42:38