【发布时间】:2023-02-14 15:49:16
【问题描述】:
我正在尝试将 MapStruct 与 QueryDsl、Spring Boot 3 和 Java 17 一起使用,但似乎我用于 MapStruct 的 maven-compiler-plugin 阻止生成 QueryDsl 资源。
<dependencies>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>5.0.0</version>
<classifier>jakarta</classifier>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>5.0.0</version>
<classifier>jakarta</classifier>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
如果我删除maven-compiler-plugin,就会生成 QueryDsl 资源,但不会生成 MapStruct。
我也曾尝试添加 QueryDsl 注释处理器,但没有任何运气。
<path>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>5.0.0</version>
</path>
有什么建议么?
【问题讨论】:
-
删除
maven-compiler-plugin配置,添加mapstruct-processor作为<scope>provided</scope>的依赖 -
遗憾的是 mapstruct bean 现在没有被注入。 mapstruct 和 querydsl 资源似乎都已就位。
-
一般来说,您有两个选择:要么利用 javac 中的注解处理器发现(将所有带有注解处理器的 jar 定义为具有 scope=provided 的依赖项),要么在
maven-compiler-plugin配置中设置全套注解处理器(即您需要添加 @987654329 @annotationProcessorPaths)。两种选择都应该导致相同的结果 -
我都做了,但都没有按预期工作。这可能是 QueryDsl 5.0.0 的错误
-
嗨@ThanosM 你解决你的问题了吗?我遇到了同样的问题
标签: spring-boot maven querydsl mapstruct