升级到Spring Boot 3导致注解处理错误

问题描述 投票:0回答:1

我不经常发帖,所以对于任何与礼仪有关的问题我提前表示歉意。我正在将现有应用程序从 Spring Boot 2.7.8 升级到 3.0.13。核心 Spring Boot 库是通过我们团队使用的自定义通用库引入的。我正在使用 IntelliJ 2022.1.2 Ultimate Edition(适用于 Mac)、JDK 17 和 Lombok。编译 POM 时,我收到多个与此类似的错误:


    <file location>:[85,69] error: cannot find symbol
        symbol:   method getRuleName()
        location: class RuleManagerDto

...还有这个:


    <file location>:[9,64] error: cannot find symbol
        symbol:   class ResultBuilder
        location: class Result

编译过程中从这一行之后开始出现错误:

maven-compiler-plugin:3.8.1:compile (default-compile)...
我假设问题与注释处理有关,特别是
@Data
@Builder
注释。我已尝试以下方法来解决该问题:

  • maven-compiler-plugin
    元素下添加了以下代码:

    <annotationProcessorPaths>
        <path>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
        </path>
        <path>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>1.6.0</version>
        </path>
        <path>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok-mapstruct-binding</artifactId>
            <version>0.2.0</version>
        </path>
    </annotationProcessorPaths>

  • 使用
    <annotationProcessorPath>
    代替上面的
    <path>
  • 将 Lombok 依赖项更新至 v1.18.24
  • 更新 Maven 编译器插件至 v3.8.1
  • 向 Lombok 依赖项添加了
    <optional>
    属性
  • 已添加
    <forceJavacCompilerUse>true</forceJavacCompilerUse>

这些潜在的补救措施都没有解决问题。我正在使缓存失效并在每次尝试修复后重新启动。我在编译时也使用了更新开关:

mvn clean -U install
。我的同事认为问题出在过时的相关库上,这是有道理的。但是,除了上面列出的类型之外,我没有收到任何错误,所以我不知道它可能是哪个库。

欢迎任何建议 - 谢谢。

java spring spring-boot maven lombok
1个回答
0
投票

这可能是 pom.xml 中 lombok 依赖性的问题。请检查您的配置是否如下(根据您的用例更改版本)

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version> 
    <scope>provided</scope> 
</dependency>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>11</source> 
                <target>11</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>${lombok.version}</version> 
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>
© www.soinside.com 2019 - 2024. All rights reserved.