intellij-ideagradlejhipsterlombok

Gradle build fails on Lombok annotated classes


I have a JHipster project in which I have added dependency for Lombok in build.gradle:

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

And I have the Lombok plugin stalled for IntelliJ. I've turned on annotation processing in IntelliJ, I can build without errors from the IntelliJ IDE, but when I try to build from the command line I get build errors. It seems like Gradle is not processing the annotations and can't find the getter/setter and log declarations. The project also runs without any kind of errors.

Command Line:

./gradlew build

Errors :

/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

Error:

/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

Service Class:

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);
    }
}

Entity Class:

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;

}

I've been trying to figure this out for hours, but totally stuck. Any help would be appreciated.


Solution

  • You will need to specify lombok as an annotation processor. To do this, You will need to add following to build.gradle in a Jhipster project.

    apply plugin: 'net.ltgt.apt'
    
    dependencies {    
        provided "org.projectlombok:lombok:$lombokVersion"
        apt "org.projectlombok:lombok:$lombokVersion"
    
        /** ... */
    }
    

    Jhipster uses net.ltgt.gradle:gradle-apt-plugin for annotation processing.

    For IntelliJ setup, Enable annotation Processing should be checked.

    More Info: Project Lombok - android instructions