美文网首页
@Slf4j注解失效

@Slf4j注解失效

作者: 漫行者曰 | 来源:发表于2022-06-16 10:55 被阅读0次

    最近在用@Slf4j注解时,忽然失效。代码编译时遇到以下的异常:

    java: cannot find symbol
      symbol:   variable log
    

    根本原因: 查询代码发现是MapStruct和Lombok之间的版本冲突问题。

    原pom.xml代码:

          <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>8</source>
                        <target>8</target>
                        <annotationProcessorPaths>
                            <path>
                                <groupId>org.mapstruct</groupId>
                                <artifactId>mapstruct-processor</artifactId>
                                <version>1.4.2.Final</version>
                            </path>
                        </annotationProcessorPaths>
                    </configuration>
                </plugin>
            </plugins>
    

    基于不同的Lombok版本,解决方案也各有不同。

    1. Lombok 1.18.12 版本以下: annotationProcessorPaths中mapstruct、projectlombok顺序不受影响。
    2. Lombok 1.18.16 版本以上: annotationProcessorPaths中mapstruct、lombok顺序受影响,mapstruct应该遵循lombok路径。
    3. Lombok 1.18.16 版本以上: lombok-mapstruct-binding非必须配置项。

    修改后pom.xml:

            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>8</source>
                        <target>8</target>
                        <annotationProcessorPaths>
                            <path>
                                <groupId>org.mapstruct</groupId>
                                <artifactId>mapstruct-processor</artifactId>
                                <version>1.4.2.Final</version>
                            </path>
                            <path>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                                <version>1.18.22</version>
                            </path>
                            <!--This is needed when using Lombok 1.18.16 and above-->
                            <path>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok-mapstruct-binding</artifactId>
                                <version>0.1.0</version>
                            </path>
                        </annotationProcessorPaths>
                    </configuration>
                </plugin>
            </plugins>
    

    参考文献:
    https://mapstruct.org/faq/
    https://stackoverflow.com/questions/47676369/mapstruct-and-lombok-not-working-together

    相关文章

      网友评论

          本文标题:@Slf4j注解失效

          本文链接:https://www.haomeiwen.com/subject/pvicvrtx.html