IDEA中配置pom文件时对annotationProcessorPaths作修改后Lombok不起作用
问题:在学习MyBatis-Flex框架时,要求在pom文件中配置 annotationProcessor,官方说这样的好处是:mybatis-flex-processor
提供APT服务,可以配置到annotationProcessorPaths,配置后,无需在依赖中声明mybatis-flex-processor
依赖。
官方的配置如下:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><annotationProcessorPaths><path><groupId>com.mybatis-flex</groupId><artifactId>mybatis-flex-processor</artifactId><version>1.5.4</version></path></annotationProcessorPaths></configuration>
</plugin>
可以看到,在annotationProcessorPaths中只配置了mybatis-flex-processor,并没有配置lombok相关内容。
之后我在进行数据库sql测试时,出现了查询到的数据使用原始的toString方法(Class@hashCode)表示,我意识到问题不对,我又尝试调用lombok生成的get、set方法,发现在编译时没有产生问题,但是一运行起来就会报错:java: cannot find symbol。我知道是lombok没有生效,但这没有生效的表现形式十分隐蔽,在编译时完全看不出来,只有运行时才知道问题出现。
所以网上的那些常规解决方法(下载lombok插件,设置中开启Enable annotation processing
等)都没有用,我回忆起之前lombok没有失效的时候,与之相比,我只是修改了pom文件的内容,而且大概率是出在plugin部分。
我尝试注释掉plugin部分的内容,然后再运行mvn clean package,几番测试下来,让我发现了问题所在,即上述配置部分。由于在
解决方案:annotationProcessorPaths中仅仅配置了mybatis-flex-processor的内容,而没有lombok的配置,导致lombok在运行时的失效,加上lombok相关内容后,问题解决。
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version></path><path><groupId>com.mybatis-flex</groupId><artifactId>mybatis-flex-processor</artifactId><version>1.5.4</version></path></annotationProcessorPaths></configuration>
</plugin>