Не удается найти ошибку символа: Lombok 1.18.6 не работает с Gradle 5.2.1, JDK 10

#java #gradle #groovy #build #lombok

#java #gradle #groovy #сборка #lombok

Вопрос:

Сборки с Gradle 5.2.1 и зависимостью Lombok 1.18.6 завершаются сбоем с JDK 10. Кажется, аннотации Lombok обрабатываются ненадлежащим образом. Я продолжаю получать ошибку «не удается найти символ» в различных файлах Java в моем исходном коде. Есть мысли о том, почему это может происходить? Я обнаружил, что дефект уже создан:https://github.com/rzwitserloot/lombok/issues/1572

Я использую:

Java JDK 10

Gradle 5.2.1

Lombok 1.18.6

Спасибо.

Ответ №1:

Я нашел следующее решение этой проблемы, используя плагин для обработки аннотаций Lombok во время компиляции.

Мне пришлось выполнить следующие шаги в build.gradle:

1) Добавить id "net.ltgt.apt" version "0.15" в раздел плагинов.

2) Добавить maven { url 'https://projectlombok.org/edge-releases' } в раздел репозиториев.

3) Добавьте следующее в раздел «зависимости»:

 compileOnly 'org.projectlombok:lombok:edge-SNAPSHOT'
apt 'org.projectlombok:lombok:edge-SNAPSHOT'

compileOnly 'org.projectlombok:lombok:1.18:6'
annotationProcessor 'org.projectlombok:lombok:1.18:6'
  

4) Добавьте задачу:

 tasks.withType(JavaCompile) {
  options.annotationProcessorPath = configurations.apt
}
  

Это позволяет успешно завершить сборку.

Обновление 29.03.2019: Это обходное решение также работает с Gradle 5.3, Java JDK 10

Спасибо.

Комментарии:

1. Вы уверены, что исправление или, скорее, обходной путь заключается не просто в использовании репозитория snapshot ( edge-releases ), где эта ошибка уже исправлена?

2. К сожалению, это обходное решение не устраняет эту проблему. Помогло обновление IntelliJ до 2019.1.

3. Не могли бы вы опубликовать или дать ссылку на полный bundle.gradle файл? Я получаю ошибки сборки о том, что метод apt() не определен.

4. annotationProcessor ‘org.projectlombok:lombok: 1.18:6’ Это была единственная строка, которую мне нужно было добавить.