[英]Lombok doesn't work with spring-boot-maven-plugin
我有帶有下一個插件和依賴項的 Spring-boot應用程序 :
<!--...-->
<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>
還有在我的應用中用於測試lombok的文本2類:
import lombok.Data;
@Data
public class TestDto {
private String testStr;
}
和
public class TestCall {
public void testLombok() {
TestDto dto = new TestDto();
dto.setTestStr("My Test String.");
System.out.println(dto);
}
}
因此,當我從插件甚至是簡單的命令mvn compile運行spring-boot:run時,我會遇到下一個錯誤:
[錯誤]無法在項目service-api上執行目標org.apache.maven.plugins:maven-compiler-plugin:3.1:compile(默認編譯):編譯失敗:編譯失敗:[ERROR] D:\\ Projects \\? ????? \\ service-api \\ src \\ main \\ java \\ TestCall.java:[7,-1] [錯誤] 1. D:\\ Projects \\ ??????? \\ service-api \\中的錯誤src \\ main \\ java \\ TestCall.java(在第7行)[錯誤] dto.setTestStr(“我的測試字符串。”); [錯誤]類型TestDto的方法setTestStr(String)未定義。[錯誤] ---------- [錯誤] 1個問題(1個錯誤) [錯誤] [錯誤]發現1錯誤和0警告。
似乎lombok功能在spting插件上不起作用 。 但是,如果我使用標准的maven-compiler-plugin (版本3.5.1),則一切正常。 但是目前,我們想使用Spring Boot嵌入式容器,並且還沒有准備好更改構建工作流程。 是否可以對此問題采取措施? 也許我應該包括一些特殊的依賴項或類似的東西?
由於Lombok生成了一些樣板代碼,因此您不必這樣做,因此必須有一種初始化此生成的方法。 對於您的IDE,您可以使用一個插件來完成。 但是,對於Maven構建,您需要一個構建步驟,該步驟告訴maven應該生成相關代碼(在build部分中):
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.16.8.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>delombok</goal>
</goals>
</execution>
</executions>
</plugin>
問題出在包含下一個插件的父pom中:
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerId>groovy-eclipse-compiler</compilerId>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-compiler</artifactId>
<version>2.9.2-01</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-batch</artifactId>
<version>2.4.3-01</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
因此,我在這里找到了解決方案: Maven Groovy和Java + Lombok
現在我的groovy-eclipse-compiler插件是:
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerId>groovy-eclipse-compiler</compilerId>
<verbose>true</verbose>
<fork>true</fork>
<compilerArguments>
<javaAgentClass>lombok.launch.Agent</javaAgentClass>
</compilerArguments>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-compiler</artifactId>
<version>2.9.2-01</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-batch</artifactId>
<version>2.4.3-01</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.8</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.