簡體   English   中英

如何在 gradle 中與構建任務分開執行注釋處理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM