配置kapt来处理lombok注释

这是这些问题的后续行动:

  • Kotlin没有看到Java Lombok访问器?
  • kapt是否支持maapt?

kapt似乎已经从现在开始发展,现在它甚至在Maven中得到了支持。 我正在尝试这个(注意配置中的Lombok注释处理器):

<plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <version>${kotlin.version}</version> <executions> <execution> <id>kapt</id> <goals> <goal>kapt</goal> </goals> <configuration> <sourceDirs> <sourceDir>${project.basedir}/src/main/java</sourceDir> <sourceDir>${project.basedir}/src/main/kotlin</sourceDir> </sourceDirs> <annotationProcessors> <annotationProcessor>lombok.core.AnnotationProcessor</annotationProcessor> </annotationProcessors> </configuration> </execution> ... </plugin> 

但是它似乎仍然没有任何效果,而Lombok @Getter仍然被忽略,正如相关问题所描述的那样。

有什么可以做的吗?

所以,如果你想在Kotlin类上使用Lombok注释,这应该可以工作:

 <execution> <id>kapt</id> <goals> <goal>kapt</goal> </goals> <configuration> <sourceDirs> <sourceDir>src/main/kotlin</sourceDir> <sourceDir>src/main/java</sourceDir> </sourceDirs> <annotationProcessors> <annotationProcessor>lombok.launch.AnnotationProcessorHider$AnnotationProcessor</annotationProcessor> </annotationProcessors> <annotationProcessorPaths> <annotationProcessorPath> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </annotationProcessorPath> </annotationProcessorPaths> </configuration> </execution> 

如果您需要使用Kotlin代码使用Lombok类,则需要使用delombok:

 <plugin> <groupId>org.projectlombok</groupId> <artifactId>lombok-maven-plugin</artifactId> <version>${lombok.version}.0</version> <executions> <execution> <id>delombok</id> <phase>generate-sources</phase> <goals> <goal>delombok</goal> </goals> <configuration> <formatPreferences> <javaLangAsFQN>skip</javaLangAsFQN> </formatPreferences> <verbose>true</verbose> </configuration> </execution> <execution> <id>test-delombok</id> <phase>generate-test-sources</phase> <goals> <goal>testDelombok</goal> </goals> <configuration> <verbose>true</verbose> </configuration> </execution> </executions> </plugin> 

在这种情况下,你根本不需要kapt。 对我来说就像一个魅力。