JOOQ 检查器的 Gradle annotationProcessor

Posted

技术标签:

【中文标题】JOOQ 检查器的 Gradle annotationProcessor【英文标题】:Gradle annotationProcessor for JOOQ checker 【发布时间】:2018-08-06 12:11:53 【问题描述】:

Gradle 是否与为 JOOQ 类型检查器注释处理器 (https://www.jooq.org/doc/latest/manual/tools/checker-framework/) 描述的 Maven 配置等效? Maven版本是:

<dependency>
  <groupId>org.jooq</groupId>
  <artifactId>jooq-checker</artifactId>
  <version>3.10.5</version>
</dependency>

<plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.3</version>
  <configuration>
    <source>1.8</source>
    <target>1.8</target>
    <fork>true</fork>
    <annotationProcessors>
      <annotationProcessor>org.jooq.checker.SQLDialectChecker</annotationProcessor>
    </annotationProcessors>
    <compilerArgs>
      <arg>-Xbootclasspath/p:1.8</arg>
    </compilerArgs>
  </configuration>
</plugin>

但是,虽然我可以将编译依赖项放入 Gradle,但我不确定将 annotationProcessor 位放在哪里。任何帮助将不胜感激!

【问题讨论】:

相关:***.com/q/15584472/521799 【参考方案1】:

Gradle 从 Gradle 3.4 开始支持注释处理器,方法是为处理器添加配置(例如命名为“apt”)并设置 annotationProcessorPath。详情请见CompileOptions#setAnnotationProcessorPath()

例子:

configurations 
    apt


dependencies 
    apt 'org.jooq: jooq-checker:3.10.5'


tasks.withType(JavaCompile) 
    options.annotationProcessorPath = configurations.apt
    options.compilerArgs << "-processor" << "org.jooq.checker.SQLDialectChecker"

从 Gradle 4.6 开始,使用预定义的 annotationProcessorconfiguration 应该会更简单:

dependencies 
    annotationProcessor 'org.jooq: jooq-checker:3.10.5'

compileJava.options.compilerArgs << "-processor" << "org.jooq.checker.SQLDialectChecker"

还可以查看Gradle 4.6-rc.2 release notes 了解详情。 当然还有改进的潜力:Make annotation processors a first-class citizen。

当然还有一些用于 Gradle 的 jOOQ 插件,您可能想看看:https://plugins.gradle.org/search?term=jooq

【讨论】:

官方推荐的Gradle插件是github.com/etiennestuder/gradle-jooq-plugin 我不必在任何地方指定org.jooq.checker.SQLDialectChecker 吗?我要运行 Gradle,但它实际上并没有运行 JOOQ 检查器 @GaborAngeli 我已经编辑了答案以包括明确指定注释处理器的必要步骤。 @LukasEder JOOQ 的 Gradel 插件不包含或运行检查器,是吗? @thee:介意问一个新问题,还是直接在插件的 github 问题跟踪器上?

以上是关于JOOQ 检查器的 Gradle annotationProcessor的主要内容,如果未能解决你的问题,请参考以下文章

JOOQ + Gradle:如何为 JOOQ 生成器定义多个模式?

无法使用 gradle-jooq-plugin-3.0.1、jooq-3.11.2 找到或加载主类 org.jooq.codegen.GenerationTool

使用 gradle 的 JOOQ 连接池

SQL Server 2017 - 使用 Gradle 生成 JOOQ 代码

带有 Gradle 和 Kotlin 的 JOOQ 不生成文件

springboot+kotlin+gradle+jooq的学习笔记