Gradle注解处理器用于JOOQ检查器

4
Gradle是否有与JOOQ类型检查注释处理器所描述的Maven配置等效的内容(https://www.jooq.org/doc/latest/manual/tools/checker-framework/)? 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放在哪里。非常感谢您的帮助!


相关链接:https://dev59.com/HGUp5IYBdhLWcg3wAj7y - Lukas Eder
1个回答

6

自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开始,使用预定义的annotationProcessor配置会更加简单:

dependencies {
    annotationProcessor 'org.jooq: jooq-checker:3.10.5'
}
compileJava.options.compilerArgs << "-processor" << "org.jooq.checker.SQLDialectChecker"

请查看 Gradle 4.6-rc.2 发布说明,了解更多详情。 当然,总有改进的潜力: 使注释处理器成为一流公民。 当然,还有一些针对 Gradle 的 jOOQ 插件,您可能想要查看:https://plugins.gradle.org/search?term=jooq

2
官方推荐的Gradle插件是https://github.com/etiennestuder/gradle-jooq-plugin。 - Lukas Eder
我不需要在任何地方指定 org.jooq.checker.SQLDialectChecker 吗? 我已经让 Gradle 运行了,但它实际上并没有运行 JOOQ 检查器。 - Gabor Angeli
@GaborAngeli 我已经编辑了答案,包括明确指定注解处理器所需的步骤。 - joschi
@LukasEder JOOQ的Gradle插件不包括或运行检查器,对吗? - thee
@thee:可以考虑在插件的Github问题跟踪器上直接提出新问题吗? - Lukas Eder
谢谢@joschi!我希望jooq的开发人员能够将这个放在他们的文档中,与maven指令一起。 - Shadow Man

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接