Maven编译器未将getters / setters(使用Lombok生成)添加到生成jar文件

时间:2019-03-19 18:04:49

标签: java maven lombok

我有下面的Pojo类,已经从@Data中添加了Lombok

该项目在Eclipse IDE中运行良好,我什至可以在IDE的大纲窗口中看到getter / setter。但是,当我从IDE运行mvn clean installRun As Maven Install时,生成的jar文件没有任何错误,但是没有方法(getterssetters,{{1 }},equals)由hashcode生成。 outline window

由于IDE正在显示方法,所以POM文件中的maven编译器插件一定存在问题。我尝试了SO的所有可能解决方案,但没有任何效果。

这是POM:

Lombok

我已将测试项目推送到Github。可以从这里克隆:https://github.com/Puspendert/test-lambok.git

更新:为验证生成getter / setter是否会产生任何影响,我更改了主要方法:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>example</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>test-boot</name>
    <description>Demo project</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>1.3.0.Final</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArgument>-proc:none</compilerArgument>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${lombok.version}</version>
                        </path>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>1.3.0.Final</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
        </plugins>

    </build>


</project>

和繁荣,正如预期的那样,该项目在@SpringBootApplication public class TestBootApplication { public static void main(String[] args) { User user = new User(); user.setName("hero"); System.out.println(user.getName()); } } 上给出了编译错误:

mvn clean install

请提出建议,这可能是什么问题?

1 个答案:

答案 0 :(得分:3)

您正在明确禁用注释处理!

<compilerArgument>-proc:none</compilerArgument>

删除此行-lombok毕竟是注释处理库-一切(应该)工作文件

编辑:为了公平起见,还有一个已删除的答案(出于某种原因),该答案也表明