web-dev-qa-db-fra.com

La construction de Gradle échoue sur les classes annotées de Lombok

J'ai un projet JHipster dans lequel j'ai ajouté une dépendance pour Lombok dans build.gradle:

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

Et j'ai le plugin Lombok calé pour IntelliJ. J'ai activé le traitement des annotations dans IntelliJ, je peux construire sans erreurs à partir de l'IDE IntelliJ, mais lorsque j'essaie de construire à partir de la ligne de commande, j'obtiens des erreurs de construction. Il semble que Gradle ne traite pas les annotations et ne trouve pas les déclarations getter/setter et log. Le projet s'exécute également sans aucune sorte d'erreurs.

Ligne de commande:

./gradlew build

Les erreurs :

/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

Erreur:

/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

Classe de service:

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

Classe d'entité:

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;

}

J'essaie de comprendre cela depuis des heures, mais je suis totalement coincé. Toute aide serait appréciée.

15
Jose Gulisano

Vous devrez spécifier lombok comme processeur d'annotation. Pour ce faire, vous devrez ajouter les éléments suivants à build.gradle dans un projet Jhipster.

apply plugin: 'net.ltgt.apt'

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

    /** ... */
}

Jhipster utilise net.ltgt.gradle:gradle-apt-plugin pour le traitement des annotations.

Pour la configuration de IntelliJ, Enable annotation Processing doit être vérifié.

Plus d'informations: Project Lombok - Android instructions

17
TheKojuEffect

J'ai eu le même problème et j'ai travaillé pour moi lors de l'ajout à build.gradle:

dependencies{

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

}

Ressource: https://projectlombok.org/setup/gradle

10
user3170676

Le même problème auquel je faisais face où la construction propre de ./gradlew fonctionnait bien, mais quand j'essayais de faire un nettoyage propre de Gradle, les méthodes getter et setter qui sont supposées être générées par lombok n'étaient pas trouvées au moment de la construction de Gradle. Comme il jetait une exception d'échec de génération pour la compilation

Plus tôt, j'avais la version 3.4.1 du wrapper de grappin et la version 5.6.2 de gradle. Je suis donc en mesure de résoudre ce problème en rétrogradant ma version gradle à 4.10.0 où ma version wrapper gradle reste la même, c'est-à-dire 3.4.1

Ceci est la version gradle

Gradle 4.10

Heure de construction: 2018-08-27 18:35:06 Révision UTC: ee3751ed9f2034effc1f0072c2b2ee74b5dce67d

Kotlin DSL: 1.0-rc-3 Kotlin: 1.2.60 Groovy: 2.4.15 Ant: Apache Ant (TM) version 1.9.11 compilée le 23 mars 2018 JVM: 1.8.0_191 (Oracle Corporation 25.191-b12) OS: Mac OS X 10.14.6 x86_64

Ceci est la version wrapper gradle

Gradle 3.4.1

Heure de construction: 2017-03-03 19:45:41 Révision UTC: 9eb76efdd3d034dc506c719dac2955efb5ff9a93

Groovy: 2.4.7 Ant: Apache Ant (TM) version 1.9.6 compilée le 29 juin 2015 JVM: 1.8.0_191 (Oracle Corporation 25.191-b12) OS: Mac OS X 10.14.6 x86_64

Ça marche pour moi

0
Rahul