Сбой сборки Gradle в аннотированных классах Lombok

У меня есть проект JHipster, в котором я добавил зависимость для Lombok в build.gradle:

compile group: 'org.projectlombok', name: 'lombok', version: lombok_version

И у меня остановился плагин Lombok для IntelliJ. Я включил обработку аннотаций в IntelliJ, я могу создавать без ошибок из IntelliJ IDE, но когда я пытаюсь построить из командной строки, я получаю ошибки сборки. Похоже, что Gradle не обрабатывает аннотации и не может найти объявления getter / setter и log. Проект также работает без ошибок.

Командная строка:

./gradlew build

Ошибки:

/Users/.../source/v4.0/src/main/java/com/.../service/MyService.java:145: error: cannot find symbol
        log.info("Security Context: " + SecurityUtils.getCurrentUserLogin());
        ^
  symbol:   variable log
  location: class MyService

Ошибка:

/Users/.../source/v4.0/src/main/java/com/.../service/MyService.java:105: error: cannot find symbol
        myClass.setDescription(description);
                        ^
  symbol:   method setDescription(String)
  location: variable myClass of type MyClass

Класс обслуживания:

import lombok.extern.slf4j.Slf4j; 
import org.springframework.stereotype.Service;

@Service
@Slf4j
public class MyService {      
    public void someMethod(){
        log.debug("Security Context: " + SecurityUtils.getCurrentUserLogin());
        MyClass myCLass = new MyClass();
        myClass.setDescription(description);
    }
}

Класс сущности:

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.Table;

@Entity
@Table(name="t_juror_file_update")
@Getter
@Setter
@NoArgsConstructor
public class MyClass {

    private String description;

}

Я пытался понять это часами, но полностью застрял. Любая помощь будет оценена.


person Jose Gulisano    schedule 06.02.2016    source источник
comment
Можете ли вы опубликовать свой класс SecurityUtils?   -  person Ethan    schedule 07.02.2016
comment
Вы также включали зависимость от SLF4J?   -  person Roel Spilker    schedule 08.02.2016
comment
Спасибо Итану и Роулу за ваши ответы. Я добавил больше деталей, чтобы показать, что получаю ошибки компиляции в объявлениях геттеров / сеттеров и журналов. Я не думаю, что это специфично для класса SecureUtils. У меня есть группа компиляции: 'org.springframework.boot', имя: 'spring-boot-starter-logging' предоставляет SLF4J.   -  person Jose Gulisano    schedule 08.02.2016


Ответы (4)


Вам нужно будет указать lombok в качестве обработчика аннотаций. Для этого Вам нужно будет добавить подписку к build.gradle в Jhipster проекте.

apply plugin: 'net.ltgt.apt'

dependencies {    
    provided "org.projectlombok:lombok:$lombokVersion"
    apt "org.projectlombok:lombok:$lombokVersion"

    /** ... */
}

Jhipster использует net.ltgt.gradle:gradle-apt-plugin для обработки аннотаций.

Для настройки IntelliJ следует установить флажок Enable annotation Processing.

Дополнительная информация: Project Lombok - инструкции для Android

person TheKojuEffect    schedule 12.03.2016

У меня была такая же проблема, и я работал у меня при добавлении в build.gradle:

dependencies{

compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'

}

Ресурс: https://projectlombok.org/setup/gradle

person user3170676    schedule 25.06.2019
comment
хорошо работает с Gradle 5.6.2, annotationProcessor 'org.projectlombok:lombok:1.18.8' является обязательным - person Yanjiong Wang; 15.09.2019
comment
Если вы используете ломбок в тестах, вам нужно добавить: testCompileOnly 'org.projectlombok:lombok:1.18.8' и testAnnotationProcessor 'org.projectlombok:lombok:1.18.8' - person Ilya Ovesnov; 09.07.2020

Та же проблема, с которой я столкнулся, когда чистая сборка ./gradlew работала нормально, но когда я пытался выполнить чистую сборку gradle, методы получения и установки, которые, как предполагается, были сгенерированы lombok, где не были найдены во время сборки gradle. Поскольку он генерирует исключение сбоя сборки для компиляции

Раньше у меня была Grapper wrapper версии 3.4.1 и gradle версии 5.6.2. Итак, я могу исправить эту проблему, снизив оценку моей версии Gradle до 4.10.0, тогда как моя версия оболочки Gradle остается прежней, то есть 3.4.1

Это версия Gradle

Gradle 4.10

Время сборки: 2018-08-27 18:35:06 UTC Версия: ee3751ed9f2034effc1f0072c2b2ee74b5dce67d

Kotlin DSL: 1.0-rc-3 Kotlin: 1.2.60 Groovy: 2.4.15 Ant: Apache Ant (TM) версии 1.9.11, скомпилированный 23 марта 2018 г. JVM: 1.8.0_191 (Oracle Corporation 25.191-b12) ОС: Mac OS X 10.14.6 x86_64

Это версия оболочки Gradle

Gradle 3.4.1

Время сборки: 2017-03-03 19:45:41 UTC Версия: 9eb76efdd3d034dc506c719dac2955efb5ff9a93

Groovy: 2.4.7 Ant: Apache Ant (TM) версии 1.9.6, скомпилированный 29 июня 2015 г. JVM: 1.8.0_191 (Oracle Corporation 25.191-b12) ОС: Mac OS X 10.14.6 x86_64

Это работает для меня

person Rahul    schedule 16.10.2019
comment
точно такая же проблема. Я не думаю, что возможность понизить рейтинг - это вариант. - person noobEinstien; 27.05.2020

Для новых пользователей рассмотрите возможность использования плагина gradle:

plugins {
  id "io.freefair.lombok" version "5.3.3.3"
}

Тогда вам не нужны compileOnly или annotationProcessor

Ссылка: https://plugins.gradle.org/plugin/io.freefair.lombok < / а>

person Steven Yue    schedule 21.05.2021