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

Java14微服务项目mvn编译common模块报maven-compiler-plugin 3.8.1错误

问题1:maven-compiler-plugin:3.8.1的版本来源

你当前项目继承了org.springframework.boot:spring-boot-starter-parent:2.4.12,Spring Boot官方在父依赖管理中已经默认锁定了maven-compiler-plugin的版本为3.8.1,哪怕你没有在pom中显式声明该插件,也会自动继承这个版本。

你之前配置的是spring-boot-maven-plugin,和maven-compiler-plugin是两个完全独立的Maven插件:前者用于将Spring Boot项目打包为可执行jar/war,后者负责Java代码的编译工作,所以你配置前者不会对编译插件的版本和行为产生任何影响,这也是你认为“已完成配置但仍有问题”的核心原因。

问题2:报错的根因与解决方案

报错本质是你使用的Lombok 1.18.18对Java 14的模块访问限制兼容不足,Lombok的注解处理器需要访问JDK内部的javac处理类,但Java 9之后引入的模块系统默认禁止了外部代码对JDK内部类的访问。

建议按优先级选择以下解决方案:

  • 方案一:升级Lombok版本
    直接将所有pom中定义的lombok.version修改为1.18.20及以上版本,该版本开始已经原生适配了Java 14的模块访问规则,无需额外配置即可解决问题。推荐优先选择该方案,改动最小兼容性最好。
  • 方案二:给编译插件添加开放模块参数
    如果你不想升级Lombok版本,可在根pom的build/plugins节点下显式声明maven-compiler-plugin的配置,添加模块开放参数:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
        <compilerArgs>
            <arg>--add-exports</arg>
            <arg>jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>
        </compilerArgs>
    </configuration>
</plugin>

该配置会主动将JDK内部的javac处理包开放给未命名模块,允许Lombok访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:24:01