【问题标题】:Issue on maven(pom.xml) settings on QueryDsl, MapStruct, Lombok and intellijQueryDsl、MapStruct、Lombok 和 intellij 上的 maven(pom.xml) 设置问题
【发布时间】:2021-01-22 05:00:16
【问题描述】:

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

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

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

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

请帮忙 谢谢 :)

【问题讨论】:

    标签: maven intellij-idea querydsl lombok mapstruct


    【解决方案1】:

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

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

    【讨论】:

    • 感谢评论,但我已经尝试使用 annotationProcessorPaths 作为stackoverflow.com/questions/44522494/… 的第二个答案,我忘记了什么吗?
    • 仅在映射器类中进行更改时会发生什么?那一切都好吗。您可能会受到我提到的 IntelliJ 改进所解决的问题的影响
    猜你喜欢
    • 2020-02-07
    • 1970-01-01
    • 2016-12-21
    • 2021-11-03
    • 2016-07-03
    • 1970-01-01
    • 2023-02-14
    • 2020-11-25
    • 2016-10-03
    相关资源
    最近更新 更多