无法升级Spring Boot至2.7.x版本,Maven依赖查找失败求助
解决Spring Boot 2.7.x版本升级依赖找不到的问题
看起来你在升级Spring Boot到2.7.x版本时遇到了挺头疼的依赖问题,我帮你梳理一下问题根源和解决步骤:
一、先看你的pom.xml存在的几个小问题
这些问题会加剧依赖拉取的异常:
- H2数据库依赖未指定作用域+版本缺失:虽然Spring Boot Parent会自动管理H2的版本,但你没给它加
<scope>test</scope>(除非你生产环境真的用H2),升级Parent版本后容易出现版本匹配异常; - Spring Boot Maven插件未显式指定版本:虽然Parent里有默认版本,但升级时显式指定和Parent一致的版本,能避免插件版本不匹配的问题;
- 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
相关产品推荐
相关产品推荐

