Mon projet est une application Spring-boot 2.1.1.RELEASE
.
C'est un projet maven multi-modules. Il s'agit du fichier POM parent
cannot find symbol [ERROR] symbol: method getSite() cannot find symbol [ERROR] symbol: method getSecret()
example-common
utilise l'annotation lambok
pour les getters et les setters. Voici le fichier POM de example-common
@Data public class CaptchaConfigs { private String site; private String secret; }
Comme on peut le voir, j'utilise
.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.example</groupId> <artifactId>example-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>example-common</artifactId> <name>example-common</name> <description>module contains commons utils for all other modules</description> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <scope>provided</scope> </dependency> <!-- other dependencies --> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${java-version}</source> <target>${java-version}</target> <compilerArgument>-proc:none</compilerArgument> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build> </project>
@Data
l'annotation ne génère pas de getters / setters pendant le processus de maven build
et donc de donner l'erreur p>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <name>example-parent</name> <description>example.com parent module</description> <groupId>com.example</groupId> <artifactId>example-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>example-common</module> <module>example-persistence</module> <module>example-rest</module> </modules> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> </parent> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> </plugin> </plugins> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven-compiler-plugin.version}</version> <configuration> <source>${java-version}</source> <target>${java-version}</target> <compilerArgument>-proc:none</compilerArgument> </configuration> </plugin> </plugins> </pluginManagement> </build> <properties> <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version> <java-version>1.8</java-version> </properties> </project>
Les getters / setters sont présents dans l'EDI, je peux les voir dans la fenêtre de contour.
Si je supprime le @Data
et que j'écris les getters / setters manuellement, le BUILD réussit.
J'ai fait toutes les configurations ( lambok-xxx.jar
) pour lambok
et c'est pourquoi il ne donne pas l'erreur de compilation dans l'EDI, cela échoue uniquement à BUILD.
Est-ce que je fais quelque chose de mal au POM?
PS: J'utilise la version eclipse STS: 3.9.6.RELEASE
4 Réponses :
sélectionnez la troisième option et essayez si cela ne fonctionne pas, vous suivez le lien ci-dessous pourrait vous aider
réponse lié d'une manière ou d'une autre à votre problème, cliquez sur le lien
Déjà essayé. Le lien que vous avez fourni contient les solutions si l'EDI ne génère pas les méthodes. Mais dans mon cas, je peux voir les getters / setters dans la fenêtre de contour. Ils ne sont pas présents uniquement au moment de la construction. Ajout de l'image dans la question.
Veuillez définir la version de maven-compiler-plugin
sur 3.5. Avec maven compiler 3.5.x annotationProcessorPaths
, fonctionne très bien.
Essayez d'ajouter ci-dessous à votre plugin de compilateur maven.
<version>3.5.1</version>
J'utilise Lombok
sur le même Spring Boot 2.1.1.RELEASE
. Je pense que le problème vient de votre plugin maven. Voici ma dépendance et mon plugin qui fonctionnent bien.
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
C'était ma configuration, comme je m'y attendais. Vous avez la réponse d'ici.
En fait, c'est le
qui a causé le problème. Le supprimer a résolu le problème.