我搜索了很多關于QueryDSLwith的配置Gradle。我想配置注釋處理器,@Generated在生成的類上使用特定的注釋。
- 但我只能在這里找到這個鏈接:Gradle : Unable to generate QueryDSL classes。這幫助我了解了一些細節。
- 以及顯示可用選項的官方檔案: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”任務中的步驟)。
uj5u.com熱心網友回復:
如果您想要做的只是配置 QueryDSL 處理器,而不是專門將注釋處理與編譯分開,那么您所要做的就是將-Aquerydsl.generatedAnnotationClass=…編譯器引數傳遞給compileJava類。不需要單獨的任務。
compileJava {
options.compilerArgs << '-Aquerydsl.generatedAnnotationClass=com.querydsl.core.annotations.Generated'
}
您問題中的設定問題:
-proc:only禁用編譯,僅處理注釋并生成代碼(在options.generatedSourceOutputDirectory)-processor僅列出 QueryDSL 處理器將禁用處理器路徑中的所有其他注釋處理器- 該任務被配置成
finalizedBy的compileJava,所以compileJava會編譯代碼,應用的所有注釋處理器,沒有你想傳遞給QueryDSL處理器的具體配置,然后才重新運行與某一特定的選項,但沒有編譯QueryDSL處理器,所以它會生成具有正確配置的源代碼(例如用于在您的 IDE 中使用),但不會編譯它,因此編譯后的類仍將具有來自未配置compileJava任務的“錯誤”配置
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/358327.html
下一篇:Ionic5Capacitor3應用程式未顯示在Android8上,但從androidstudio運行應用程式運行良好
