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

无法升级Spring Boot至2.7.x版本,Maven依赖查找失败求助

解决Spring Boot 2.7.x版本升级依赖找不到的问题

看起来你在升级Spring Boot到2.7.x版本时遇到了挺头疼的依赖问题,我帮你梳理一下问题根源和解决步骤:

一、先看你的pom.xml存在的几个小问题

这些问题会加剧依赖拉取的异常:

  1. H2数据库依赖未指定作用域+版本缺失:虽然Spring Boot Parent会自动管理H2的版本,但你没给它加<scope>test</scope>(除非你生产环境真的用H2),升级Parent版本后容易出现版本匹配异常;
  2. Spring Boot Maven插件未显式指定版本:虽然Parent里有默认版本,但升级时显式指定和Parent一致的版本,能避免插件版本不匹配的问题;
  3. Azure依赖版本兼容性风险:Spring Boot 2.7.x和你当前用的azure.version=3.13.1可能存在兼容问题,这个后面会细说。

我帮你调整后的pom.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.0</version> <!-- 修改为目标版本 -->
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>com</groupId>
<artifactId>something</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>something else</name>
<description>some info</description>
<properties>
<java.version>11</java.version>
<azure.version>3.14.0</azure.version> <!-- 升级到兼容Spring Boot 2.7.x的版本 -->
<azure-identity.version>1.6.0</azure-identity.version> <!-- 同步兼容版本 -->
<spring-cloud-azure-starter-keyvault-secrets.version>4.1.0</spring-cloud-azure-starter-keyvault-secrets.version>
<jackson.version>2.13.3</jackson.version> <!-- 匹配Spring Boot 2.7.x的Jackson版本 -->
<azure-core-serializer-json-jackson.version>1.4.0</azure-core-serializer-json-jackson.version>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<log4j2.version>2.17.1</log4j2.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>azure-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope> <!-- 添加test作用域,符合常规使用场景 -->
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-core-serializer-json-jackson</artifactId>
<version>${azure-core-serializer-json-jackson.version}</version>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-keyvault-secrets</artifactId>
<version>${spring-cloud-azure-starter-keyvault-secrets.version}</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>${azure-identity.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>azure-spring-boot-bom</artifactId>
<version>${azure.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.0</version> <!-- 显式指定插件版本,和Parent版本一致 -->
</plugin>
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>2.3.0</version>
<configuration>
<schemaVersion>V2</schemaVersion>
<subscriptionId>xxx</subscriptionId>
<resourceGroup>xxxx</resourceGroup>
<appName>xxx</appName>
<pricingTier>P1v2</pricingTier>
<region>West Europe</region>
<runtime>
<os>linux</os>
<javaVersion>java 11</javaVersion>
<webContainer>Java SE</webContainer>
</runtime>
<!-- start of APP_SETTINGS -->
<appSettings>
<property>
<name>JAVA_OPTS</name>
<value>-Dserver.port=80</value>
</property>
</appSettings>
<!-- end of APP_SETTINGS -->
<deployment>
<resources>
<resource>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.jar</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
</plugins>
</build>
</project>

二、解决Maven无法拉取Spring Boot 2.7.x依赖的核心问题

如果调整pom后还是找不到依赖,大概率是Maven仓库缓存或配置的问题,试试这些操作:

  • 强制更新依赖并清理缓存:在项目根目录执行命令 mvn clean install -U,-U 参数会强制Maven忽略本地缓存,重新从远程仓库拉取最新的依赖版本;
  • 检查Maven settings.xml配置:打开你的Maven配置文件(通常在~/.m2/settings.xml或Maven安装目录的conf/settings.xml),确保没有配置限制访问中央仓库的私有仓库,或者直接添加中央仓库的配置:
<repositories>
    <repository>
        <id>central</id>
        <url>https://repo1.maven.org/maven2/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>
  • 排查网络问题:确认你的网络能正常访问Maven中央仓库,比如直接访问https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-starter-parent/2.7.0/,如果无法访问,需要配置网络代理。

三、验证依赖是否正常

修改完成后,执行 mvn dependency:tree 命令,查看所有依赖的树状结构,确认没有红色报错或版本缺失的提示。如果还是有问题,可以手动删除本地Maven仓库中Spring Boot相关的文件夹(比如~/.m2/repository/org/springframework/boot),然后重新执行mvn clean install。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 14:38:14