Проблема с настройками maven (pom.xml) в QueryDsl, MapStruct, Lombok и intellij

Моя проблема - QueryDsl и MapStruct генерируют классы только при установке maven, но я хочу, чтобы он повторно генерировался при изменении исходного кода (с автоматическим перезапуском Springboot devtool). теперь он ничего не делает при изменении исходного кода, кроме перезапуска

Мой pom.xml, как показано ниже

     ....
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.querydsl</groupId>
            <artifactId>querydsl-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>com.querydsl</groupId>
            <artifactId>querydsl-apt</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>${org.mapstruct.version}</version>
        </dependency>
      .....

<build>
        <plugins>
            <plugin>
                <groupId>com.mysema.maven</groupId>
                <artifactId>apt-maven-plugin</artifactId>
                <version>1.1.3</version>
                <dependencies>
                    <dependency>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>${org.mapstruct.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>${org.projectlombok.version}</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>target/generated-sources/annotations</outputDirectory>
                            <processors>
                                <processor>lombok.launch.AnnotationProcessorHider$AnnotationProcessor</processor>
                                <processor>org.mapstruct.ap.MappingProcessor</processor>
                                <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                            </processors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

Настройка Intellij

Обработчики аннотаций

Мой процесс - перед запуском Spring-boot мне нужно очистить, а затем установить maven из-за Qclass и MapperImpl. Также после установки maven из-за ошибки Qclass нужно проверить выходной каталог модуля в сгенерированных источниках Store относительно:

и каждый раз, когда я меняю файл картографа mapstruct, я снова делаю вышеперечисленные вещи, что очень раздражает

Я пробовал это решение, но оно не сработало..: X поток стека решение

Пожалуйста, помогите спасибо :)


person Johnpark    schedule 07.10.2020    source источник


Ответы (1)


Лучший способ добиться этого — использовать annotationProcessorPaths из компилятора maven. Он будет выполнять эту работу на этапе компиляции проекта.

IntelliJ уже правильно настраивает сборку на основе компилятора maven и сможет определить ваши процессоры. Я также знаю, что в IntelliJ IDEA 2020.3 они собираются внести некоторые улучшения в процессоры, которые улучшат взаимодействие с пользователем.

person Filip    schedule 07.10.2020
comment
спасибо за комментарий, но я уже пытался использовать annotationProcessorPaths в качестве второго ответа из stackoverflow.com/questions/44522494/ я что-то забыл? - person Johnpark; 08.10.2020
comment
Что происходит, когда вы делаете изменения только в классе картографа? Все ли в порядке тогда. На вас могут повлиять проблемы, исправленные улучшением, которое я упомянул от IntelliJ. - person Filip; 08.10.2020