Lombok不使用spring-boot-maven-plugin

时间:2016-06-27 11:09:12

标签: java spring-boot lombok

我有 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嵌入式容器,我们还没有准备好改变我们的构建工作流程。 是否有可能对此问题采取措施?可能是我应该包含一些特殊的依赖关系或类似的东西?

3 个答案:

答案 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)

如果您在使用 IDE(如 eclipse)时遇到这种情况 -

This 是解决方案。

here 安装并运行 lombok-ide jar