有关QueryDsl,MapStruct,Lombok和intellij的Mavenpom.xml设置的问题

问题描述

我的问题- 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设置

Annotation Processors

我的过程- 在Spring-boot启动之前,由于Qclass和MapperImpl,我必须先清理然后安装Maven。同样,由于Qclass错误而在maven安装后,必须检查“存储相对于:的生成源”上的“模块输出目录”。

每次更改mapstruct映射器文件时,我都会再次执行上述操作,这很烦人

我已经尝试过此解决方案,但是它没有用..:X stackover flow solution

请帮助 Thx:)

解决方法

实现此目标的最佳方法是使用maven编译器中的annotationProcessorPaths。它将在项目的编译阶段完成这项工作。

IntelliJ已经基于maven-compiler适当地配置了构建,并将能够检测到您的处理器。我也知道,在IntelliJ IDEA 2020.3中,他们将对处理器进行一些改进,以改善用户体验。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...