Spring Boot从2.3.5升级到2.7.5后Maven编译及插件问题求助
问题背景
将Spring Boot从2.3.5升级到2.7.5后,遇到两个核心问题:
- 执行
mvn clean install -U时编译失败,提示Compilation Failure : cannot access LoggingEventAware [ERROR] class file for org.slf4j.spi.LoggingEventAware not found,但IDE中对应Java文件无报错。 - 重新加载项目时,Maven无法解析插件:
Cannot resolve plugin org.apache.maven.plugins:maven-release-plugin:3.1.1。
已尝试Invalidate Cache重启IntelliJ、清理.m2仓库,均无效。
一、解决org.slf4j.spi.LoggingEventAware缺失问题
核心原因
org.slf4j.spi.LoggingEventAware是SLF4J 1.7.x及更早版本的SPI接口,在SLF4J 1.8+中被移除。你的项目中可能存在以下情况:
- 某个依赖引入了SLF4J 1.8+版本,与Spring Boot 2.7.5依赖的SLF4J 1.7.36冲突。
- 使用的老旧logback JSON依赖(
logback-json-classic:0.1.5)依赖了已废弃的SLF4J SPI接口。
解决步骤
排查依赖冲突
执行命令查看SLF4J相关依赖树:mvn dependency:tree | grep slf4j若发现SLF4J 1.8+版本的依赖,在对应的
<dependency>中添加排除规则:<exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions>替换老旧logback依赖
弃用版本过旧的logback-json-classic和logback-jackson,替换为维护活跃的logstash-logback-encoder,该依赖适配Spring Boot和SLF4J的最新版本:<dependencies> <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>7.2</version> <!-- 2.7.x版本推荐适配7.x系列 --> </dependency> </dependencies>同时删除pom.xml中对应的旧版本属性:
logback-json-classic和logback-jackson.version。强制统一SLF4J版本
在pom.xml的<properties>中显式指定SLF4J版本,确保所有依赖对齐Spring Boot parent的版本:<properties> <!-- 其他属性保留 --> <slf4j.version>1.7.36</slf4j.version> </properties>
二、解决maven-release-plugin:3.1.1无法解析问题
核心原因
- Maven版本与插件不兼容:maven-release-plugin 3.1.1要求Maven 3.5.0+,若本地Maven版本过低会导致解析失败。
- 仓库镜像配置问题:镜像未覆盖中央仓库,或镜像无法访问导致插件无法下载。
- 网络问题:无法连接中央仓库拉取插件。
解决步骤
验证Maven版本兼容性
执行命令查看本地Maven版本:mvn -v若版本低于3.5.0,升级Maven到3.6.x或更高版本(推荐3.8.x)。
添加插件仓库配置
在pom.xml中显式添加中央插件仓库,确保插件能被正确拉取:<pluginRepositories> <pluginRepository> <id>central</id> <url>https://repo1.maven.org/maven2/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories>手动下载插件(网络问题时)
若网络无法访问中央仓库,直接下载maven-release-plugin 3.1.1的所有文件(包括jar、pom等),放到本地.m2仓库的对应路径:~/.m2/repository/org/apache/maven/plugins/maven-release-plugin/3.1.1/。检查Maven镜像配置
打开settings.xml(路径:~/.m2/settings.xml或Maven安装目录下的conf/settings.xml),确保镜像配置包含中央仓库,或添加插件仓库的镜像排除规则:<mirrors> <mirror> <id>mirrorId</id> <mirrorOf>central</mirrorOf> <url>https://your-mirror-url/</url> </mirror> </mirrors>
额外验证步骤
- 执行
mvn clean install -DskipTests -U跳过测试,先验证编译是否通过,排除测试代码干扰。 - 检查IntelliJ的Maven配置:确保使用本地正确的Maven版本和
settings.xml,而非IDE内置Maven。
内容的提问来源于stack exchange,提问作者sharonm

