【问题标题】:QueryDSL with Gradle configuration of annotation processorQueryDSL 与注解处理器的 Gradle 配置
【发布时间】:2021-12-21 10:00:25
【问题描述】:

我搜索了很多关于QueryDSL 和Gradle 的配置。 我想配置注解处理器,在生成的类上使用特定的注解@Generated。

这是我的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”任务中的步骤)。

【问题讨论】:

    标签: gradle querydsl annotation-processing


    【解决方案1】:

    如果您要做的只是配置 QueryDSL 处理器,而不是专门将注释处理与编译分开,那么您所要做的就是将 -Aquerydsl.generatedAnnotationClass=… 编译器参数传递给 compileJava 类。无需单独的任务。

    compileJava {
        options.compilerArgs << '-Aquerydsl.generatedAnnotationClass=com.querydsl.core.annotations.Generated'
    }
    

    您的问题中的设置问题:

    • -proc:only 禁用编译,只处理注释和生成代码(在options.generatedSourceOutputDirectory 中)
    • -processor 仅列出 QueryDSL 处理器将禁用处理器路径中的所有其他注释处理器
    • 该任务配置为compileJava 的finalizedBy,因此compileJava 将编译您的代码,应用所有注释处理器,而不需要您想要传递给QueryDSL 处理器的特定配置,并且只有这样 使用特定选项但不编译重新运行 QueryDSL 处理器,因此它会生成具有正确配置的源代码(例如,用于您的 IDE),但不会编译它,因此编译的类仍然会来自未配置的compileJava 任务的“错误”配置

    【讨论】:

      猜你喜欢
      • 2020-05-13
      • 2019-05-23
      • 2013-03-13
      • 2015-12-13
      • 2017-05-23
      • 1970-01-01
      • 2018-04-27
      • 2020-12-29
      • 1970-01-01
      相关资源
      最近更新 更多