Настройка kapt для обработки аннотаций lombok

Это продолжение этих вопросов:

  • Котлин не видит аксессуаров Java Lombok?
  • Поддерживается ли kapt в maven?

Кажется, что kapt развился с тех пор, и теперь он даже поддерживается в Maven. Я пытаюсь это сделать (обратите внимание на обработчик комментариев Lombok в config):

<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 по-прежнему игнорируется, как описано в связанных вопросах.

Есть ли что-то, что можно сделать?

Итак, если вы хотите использовать аннотации Lombok на классах Kotlin, это должно работать:

 <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> 

Если вам нужно использовать классы Lombok в коде Kotlin, вам нужно использовать 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 вообще. Работает как прелесть для меня.

  • Как использовать kapt из командной строки (с kotlinc)?
  • Ошибка: выполнение выполнено для задачи ': app: kaptDemoTestingDebugKotlin'
  • Поддерживается ли kapt в maven?
  • Невозможно использовать локальный обработчик аннотаций в проекте Android kotlin
  • как использовать kapt в области androidTest
  • Kotlin + Room: java.lang.IllegalArgumentException: void не может быть преобразован в элемент
  • Обработчик комментариев Kotlin: он не может заставить его работать
  • Kotlin: NoClassDefFoundError - Android Studio показывает классы, которые не должны быть там
  • Как реализовать абстрактную функцию в константах Enum
  • Обработчик аннотации Kotlin-Kapt не работает с maven
  • ': app: kaptDebugKotlin' ошибка в Android-студии 3 стабильной версии с номером 1 (RC)
  • Давайте будем гением компьютера.