如何使用maven协调lombok和JPAMetalModel处理器

Pie*_*ick 8 java jpa maven lombok

如何在maven构建中激活JPAMetaModelEntityProcessor注释处理器时使用Lombok.

Maven配置:

[...]
<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <compilerArguments>
                    <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
                </compilerArguments>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-jpamodelgen</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>
[...]
Run Code Online (Sandbox Code Playgroud)

在构建过程(mvn clean install)期间,MetaModel对象生成正确,但似乎Lombok Annotation处理器不再添加到Javac编译中.所有@Getter,@ Setter,......都不起作用.

Pie*_*ick 19

在查看了lombok项目之后,我找到了一个解决方案.

将JPAMetaModelEntityProcessor指定为javac注释处理器时,似乎删除了lombok处理器.

要纠正这个问题,我们可以简单地在maven-compiler-plugin中添加Lombok注释处理器:

[...]
<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <compilerArguments>
            <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor,lombok.launch.AnnotationProcessorHider$AnnotationProcessor</processor>
        </compilerArguments>
    </configuration>
</plugin>
[...]
Run Code Online (Sandbox Code Playgroud)


小智 11

@Pierrick 的解决方案是正确的。但我可以提供这个解决方案。因为我们可以用它添加许多处理器。

<plugin>
   <artifactId>maven-compiler-plugin</artifactId>
   <configuration>
      <annotationProcessorPaths>
         <path>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
         </path>
         <path>
             <groupId>org.hibernate</groupId>
             <artifactId>hibernate-jpamodelgen</artifactId>
             <version>5.4.1.Final</version>
         </path>
      </annotationProcessorPaths>
   </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)