[英]How execute annotation processing in gradle separatly from build task
我想在單獨的任務中運行 QueryDsl Q 類型生成。 我希望不在常規 compileJava 任務中創建 Q 類型類,但編譯器會在類路徑中看到 AnnotationProcessor 並自行創建它們。 我嘗試將 annotationProcessorPath 清空,但隨后無法在單獨的任務中恢復其配置。 是否有可能以某種方式從類路徑中排除子任務的依賴關系?
compileJava {
options.annotationProcessorPath = null
}
tasks.register('generateQTypes'){
group 'build'
description 'Generate Q-Type classes with QueryDsl library'
dependencies {
annotationProcessor(
'com.querydsl:querydsl-apt:4.1.4:jpa',
'javax.persistence:javax.persistence-api:2.2',
'javax.annotation:javax.annotation-api:1.3.1')
}
compileJava {
options.annotationProcessorPath = classpath
}
}
解決此問題的最佳方法是什么?提前致謝!
我做了以下解決方案
class QTypeGenerator extends DefaultTask {
@TaskAction
addDependencies() {
project.dependencies {
annotationProcessor(
'com.querydsl:querydsl-apt:4.1.4:jpa',
'javax.persistence:javax.persistence-api:2.2',
'javax.annotation:javax.annotation-api:1.3.1')
}
}
}
tasks.register("generateQTypeClasses", QTypeGenerator) {
group('build')
description('Generate Q-type classes by queryDsl in build directory with default path')
finalizedBy('compileJava')
doLast {
println("Q-types classes will gererated and stored in ${compileJava.options.annotationProcessorGeneratedSourcesDirectory}")
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.