我搜索了很多关于配置的信息QueryDSL
with Gradle
。
我想配置注释处理器,以使用特定的注释@Generated
在生成的类上。
- 但我只能在这里找到这个链接:Gradle:无法生成 QueryDSL 类 https://stackoverflow.com/questions/62320937/gradle-unable-to-generate-querydsl-classes/69856961#69856961。这帮助我了解了一些细节。
- 官方文档显示了可用的选项:https://querydsl.com/static/querydsl/latest/reference/html/ch03s03.html https://querydsl.com/static/querydsl/latest/reference/html/ch03s03.html(3.3.2.定制)。
这是我的build.gradle
(续):
plugins {
id 'java'
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa:2.5.6'
annotationProcessor 'org.springframework.boot:spring-boot-starter-data-jpa:2.5.6'
implementation 'com.querydsl:querydsl-jpa:5.0.0'
annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jpa"
}
compileJava {
finalizedBy 'generateQueryDSL'
}
task generateQueryDSL(type: JavaCompile) {
source = sourceSets.main.java.srcDirs
classpath = sourceSets.main.compileClasspath
getDestinationDirectory().set(file("$buildDir/generated/sources/annotationProcessor/java/main"))
options.annotationProcessorPath = configurations.annotationProcessor
options.compilerArgs = [
'-proc:only',
'-processor',
'com.querydsl.apt.jpa.JPAAnnotationProcessor',
'-Aquerydsl.generatedAnnotationClass=com.querydsl.core.annotations.Generated'
]
}
有没有更简单的方法来配置注释处理器?我在使用这种方法时遇到了很多麻烦,因为原始方法不断更改带有 OLD 注释的文件,因为我无法替换这种旧行为。这样,有些任务(或“compileJava”任务中的步骤)我无法删除或覆盖。
如果您只想配置 QueryDSL 处理器,而不专门将注释处理与编译分开,那么您所要做的就是传递-Aquerydsl.generatedAnnotationClass=…
编译器参数compileJava
班级。不需要单独的任务。
compileJava {
options.compilerArgs << '-Aquerydsl.generatedAnnotationClass=com.querydsl.core.annotations.Generated'
}
您问题中的设置问题:
-
-proc:only
禁用编译,仅处理注释并生成代码(在options.generatedSourceOutputDirectory
)
-
-processor
仅列出 QueryDSL 处理器将禁用处理器路径中的所有其他注释处理器
- 该任务配置为
finalizedBy
of the compileJava
, so compileJava
将编译您的代码,应用所有注释处理器,而无需您想要传递给 QueryDSL 处理器的特定配置,并且只有那时使用特定选项重新运行 QueryDSL 处理器但不进行编译,因此它将生成具有正确配置的源代码(例如在 IDE 中使用),但不会对其进行编译,因此编译后的类仍将具有“错误” " 从未配置的配置compileJava
task
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)