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

Spring Boot从2.3.5升级到2.7.5后Maven编译及插件问题求助

Spring Boot 2.7.5升级后编译及插件解析问题解决建议

问题背景

将Spring Boot从2.3.5升级到2.7.5后,遇到两个核心问题:

  1. 执行mvn clean install -U时编译失败,提示Compilation Failure : cannot access LoggingEventAware [ERROR] class file for org.slf4j.spi.LoggingEventAware not found,但IDE中对应Java文件无报错。
  2. 重新加载项目时,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接口。

解决步骤

  1. 排查依赖冲突
    执行命令查看SLF4J相关依赖树:

    mvn dependency:tree | grep slf4j
    

    若发现SLF4J 1.8+版本的依赖,在对应的<dependency>中添加排除规则:

    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </exclusion>
    </exclusions>
    
  2. 替换老旧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。

  3. 强制统一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版本过低会导致解析失败。
  • 仓库镜像配置问题:镜像未覆盖中央仓库,或镜像无法访问导致插件无法下载。
  • 网络问题:无法连接中央仓库拉取插件。

解决步骤

  1. 验证Maven版本兼容性
    执行命令查看本地Maven版本:

    mvn -v
    

    若版本低于3.5.0,升级Maven到3.6.x或更高版本(推荐3.8.x)。

  2. 添加插件仓库配置
    在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>
    
  3. 手动下载插件(网络问题时)
    若网络无法访问中央仓库,直接下载maven-release-plugin 3.1.1的所有文件(包括jar、pom等),放到本地.m2仓库的对应路径:~/.m2/repository/org/apache/maven/plugins/maven-release-plugin/3.1.1/。

  4. 检查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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:01:36