问题描述
我的问题- 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启动之前,由于Qclass和MapperImpl,我必须先清理然后安装Maven。同样,由于Qclass错误而在maven安装后,必须检查“存储相对于:的生成源”上的“模块输出目录”。
每次更改mapstruct映射器文件时,我都会再次执行上述操作,这很烦人
我已经尝试过此解决方案,但是它没有用..:X stackover flow solution
请帮助 Thx:)
解决方法
实现此目标的最佳方法是使用maven编译器中的annotationProcessorPaths
。它将在项目的编译阶段完成这项工作。
IntelliJ已经基于maven-compiler适当地配置了构建,并将能够检测到您的处理器。我也知道,在IntelliJ IDEA 2020.3中,他们将对处理器进行一些改进,以改善用户体验。