Ich habe Frühlings-Boot-Anwendung mit den nächsten Plugins und Abhängigkeiten:Lombok funktioniert nicht mit Feder-boot-Maven-Plugin
<!--...-->
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.8</version>
<scope>provided</scope>
</dependency>
<!--...-->
<build>
<finalName>service-api</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>attached</goal>
</goals>
<configuration>
<descriptors>
<descriptor>service-api.xml</descriptor>
</descriptors>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.alexecollins.docker</groupId>
<artifactId>docker-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
und der Text 2 Klassen für Prüfung lombok in meiner App:
import lombok.Data;
@Data
public class TestDto {
private String testStr;
}
Und
public class TestCall {
public void testLombok() {
TestDto dto = new TestDto();
dto.setTestStr("My Test String.");
System.out.println(dto);
}
}
So
, wenn ich feder Boot laufen: run vom Plugin oder sogar einem einfachen Befehl mvn kompilieren, habe ich den nächsten Fehler:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project service-api: Compilation failure: Compilation failure: [ERROR] D:\Projects\??????\service-api\src\main\java\TestCall.java:[7,-1] [ERROR] 1. ERROR in D:\Projects\???????\service-api\src\main\java\TestCall.java (at line 7) [ERROR] dto.setTestStr("My Test String."); [ERROR] ^^^^^^^^^^ [ERROR] The method setTestStr(String) is undefined for the type TestDto [ERROR] ---------- [ERROR] 1 problem (1 error) [ERROR] [ERROR] Found 1 error and 0 warnings.
Es scheint, die lombok Features nicht Arbeiten an spting Plugin. Wenn ich jedoch einen Standard Maven-Compiler-Plugin (Version 3.5.1) verwenden, funktioniert alles korrekt. Aber für den Moment möchten wir Spring-Boot-Embedded-Container verwenden und sind nicht bereit, unseren Build-Workflow zu ändern. Ist es möglich, etwas mit diesem Problem zu tun? Kann ich einige spezielle Abhängigkeiten oder etwas ähnliches einschließen?
generiert ein neues Boot (Web + Lombok) Maven-Projekt über http://start.spring.io und legte eine einfache Lombok Datenklasse in es und es funktioniert gut. https://gist.github.com/zapl/1d238b278b8cc68e330e4bf1048943a8 ist die generierte Pom (unberührt) und die Java-Quelle (hinzugefügt die Datenklasse), "Spring-Boot: Run" druckt "Hallo" wie erwartet. – zapl
Das Problem ist, dass ich einen Elternpom mit Groovy-Eclipse-Compiler-Plugin habe. So fand ich, wie es für Lombok in diesem Thema konfiguriert werden sollte: http://stackoverflow.com/questions/8524891/maven-groovy-and-java-lombok – eGoLai