我有 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);
}
}
所以,当我从插件运行 spring-boot:run 或者甚至是一个简单的命令 mvn compile 时,我有下一个错误:
[错误]无法执行目标 org.apache.maven.plugins:Maven的编译器插件:3.1:编译 项目服务-api上的(default-compile):编译失败: 编译失败:[错误] d:\项目\ ?????? \服务的API的\ src \主\的java \ TestCall.java:[7, - 1] [错误] 1.错误 d:\项目\ ??????? \服务API的\ src \主\ java的\ TestCall.java (第7行)[ERROR] dto.setTestStr(&#34; My Test String。&#34;); [错误] ^^^^^^^^^^ [错误]方法setTestStr(String)未定义 类型TestDto [ERROR] ---------- [ERROR] 1问题(1错误)[错误] [错误]找到1个错误和0个警告。
似乎 lombok功能不适用于spting插件。 但是,如果我使用标准的 maven-compiler-plugin (版本3.5.1),一切正常。但是现在我们想要使用spring boot嵌入式容器,我们还没有准备好改变我们的构建工作流程。 是否有可能对此问题采取措施?可能是我应该包含一些特殊的依赖关系或类似的东西?
答案 0 :(得分:1)
问题出在包含下一个插件的父pom中:
/path1
所以,我在这里找到了解决方案:Maven Groovy and Java + Lombok
现在我的groovy-eclipse-compiler插件是:
<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>
答案 1 :(得分:0)
由于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。
答案 2 :(得分:0)