Lombok 不适用于 spring-boot-maven-plugin
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>
在我的应用程序中 testing 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);
}
}
所以,当我从插件 运行 spring-boot:运行 甚至一个简单的命令 mvn compile,我有下一个错误:
[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.
lombok 功能似乎不适用于 spting 插件。
但是,如果我使用标准 maven-compiler-plugin(版本 3.5.1),一切正常。但是现在我们想使用 spring 启动嵌入式容器,我们还没有准备好改变我们的构建工作流程。
有可能解决这个问题吗?也许我应该包括一些特殊的依赖关系或类似的东西?
由于 Lombok 会生成一些样板代码,因此您不必这样做,因此必须有一种方法来初始化这一代。对于你的 IDE 你有一个插件可以做到这一点。但是,对于 Maven 构建,您需要一个构建步骤来告诉 Maven 应该生成相关代码(在构建部分中):
<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>
有关详细信息,请查看 documentation of the 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 and 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>
如果您使用 IDE(如 eclipse)遇到这种情况 -
This 是解决方案。
安装并 运行 来自 here
的 lombok-ide jar
我有 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>
在我的应用程序中 testing 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);
}
}
所以,当我从插件 运行 spring-boot:运行 甚至一个简单的命令 mvn compile,我有下一个错误:
[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.
lombok 功能似乎不适用于 spting 插件。 但是,如果我使用标准 maven-compiler-plugin(版本 3.5.1),一切正常。但是现在我们想使用 spring 启动嵌入式容器,我们还没有准备好改变我们的构建工作流程。 有可能解决这个问题吗?也许我应该包括一些特殊的依赖关系或类似的东西?
由于 Lombok 会生成一些样板代码,因此您不必这样做,因此必须有一种方法来初始化这一代。对于你的 IDE 你有一个插件可以做到这一点。但是,对于 Maven 构建,您需要一个构建步骤来告诉 Maven 应该生成相关代码(在构建部分中):
<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>
有关详细信息,请查看 documentation of the 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 and 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>
如果您使用 IDE(如 eclipse)遇到这种情况 -
This 是解决方案。
安装并 运行 来自 here
的 lombok-ide jar