Как сосуществовать процессоры lombok и JPAMetalModel с maven

Как использовать Lombok, когда в сборке maven активирован обработчик аннотаций JPAMetaModelEntityProcessor.

Конфигурация Мавена:

[...]
<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>
[...]

В процессе сборки (mvn clean install) объекты MetaModel генерируются правильно, но кажется, что процессор аннотаций Lombok больше не добавляется в компиляцию Javac. Все @Getter, @Setter,... не работает.


person Pierrick    schedule 04.08.2015    source источник
comment
Какую версию Java вы используете? Насколько я знаю, у Ломбока проблемы с работой с Java 8.   -  person Piotr Wittchen    schedule 04.08.2015


Ответы (3)


Изучив проект ломбока, я нашел решение.

При указании JPAMetaModelEntityProcessor в качестве процессора аннотаций javac кажется, что процессор ломбока удален.

Чтобы исправить это, мы можем просто добавить обработчик аннотаций Lombok в maven-compiler-plugin:

[...]
<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <compilerArguments>
            <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor,lombok.launch.AnnotationProcessorHider$AnnotationProcessor</processor>
        </compilerArguments>
    </configuration>
</plugin>
[...]
person Pierrick    schedule 04.08.2015
comment
Подобное добавление Lombok также работает для maven-processor-plugin. - person JohnEye; 28.06.2021

Решение @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>
person Vahap Gencdal    schedule 25.03.2019

Решение, если @Pierrick не совсем верно. Вы должны переключить порядок процессоров.

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <compilerArguments>
            <processor>
                lombok.launch.AnnotationProcessorHider$AnnotationProcessor,org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor
            </processor>
        </compilerArguments>
    </configuration>
</plugin>
person Rene    schedule 03.05.2019