当前位置: 首页 > 面试题库 >

您如何将Java注释处理器集成到Java插件中

魏朗
2023-03-14
问题内容

我有一个项目,其布局如下:

src/
  java
  generated

src /
java包含jpa实体和使用由hibernate元模型注释处理器生成的jpa元模型类的查询类。

将注释处理并入Java插件的最佳方法是什么?

我目前已定义以下任务,但是它对compileJava具有任务依赖性,因为某些代码取决于注释处理器生成的类,所以该任务将失败。

task processAnnotations(type: Compile) {
    genDir = new File("${projectDir}/src/generated")
    genDir.mkdirs()
    source = ['src/java']
    classpath = sourceSets.test.compileClasspath
    destinationDir = genDir
    options.compilerArgs = ["-proc:only"]
}

问题答案:

之所以processAnnotations依赖,compileJava是因为您将测试编译类路径放在前一个任务的编译类路径上,并且测试编译类路径包含已编译的生产代码(即的输出compileJava)。

至于如何最好地解决眼前的问题,您不需要单独的编译任务。Java编译器可以调用注释处理器,并一次编译它们的生成源(连同原始源)(请参阅注释处理)。您需要做的一件事是将注释处理器放在编译类路径上:

configurations {
    hibernateAnnotationProcessor
}

dependencies {
    hibernateAnnotationProcessor "org.hibernate: ..."
}

compileJava.compileClasspath += configurations.hibernateAnnotationProcessor

(您不想将注释处理器添加compile配置中,因为那样会将其视为生产代码的依赖项。)

据我所知,这就是全部(假设您使用的是JDK6或更高版本)。



 类似资料:
  • 问题内容: 我可能只是看错了方向,但我发现有关批注处理的JSE文档非常稀疏。我想编写一个注释处理器,该处理器处理带注释的String字段和局部变量,以计算的String表达式替换它们。这应该不会太复杂,但是我对于Javax.annotation.processing的Javadoc却迷失了。 编辑:我需要在编译时处理批注,因为我想修改生成的代码。它应将带注释的常量String表达式替换为计算的St

  • null 我的git和Gradle技能是初学者水平。我将非常感谢对这项任务的任何帮助。谢谢你。

  • 我正在使用注释处理器来处理方法参数的注释。 用于参数的注释类型有一个注释@参数 现在,当注释处理器运行时,我想检查参数注释()是否有参数注释。我通过执行以下代码来实现这一点。 由于某种原因,arg始终为空。是否有注释未返回的原因?

  • 我已经通过使用Java 8的命令提示符编译成功地运行了用于类级保留注释的注释处理器。 但是,当我尝试在eclipse中配置注释处理器并尝试使用选项运行它时,它没有生效。 我已将包含自定义注释处理器类文件的Jar文件包含到

  • @Bean public WebMvcEndpoint HandlerMap webEndpoint ServletHandlerMap(WebEndpoint供应商webEndpoint供应商,ServletEndpoint供应商servletEndpoint供应商,控制器Endpoint供应商控制器Endpoint供应商,Endpoint MediaTypes endpoint MediaTy

  • 无法理解如何配置build.gradle以便在没有任何JPA/JDO/Mongo的情况下使用querydsl注释处理器。我想使用@QueryEntity注释生成Q类,这样我就可以使用DSL支持编写动态SQL查询,然后将查询转换为纯文本并提供给Spring R2DBC DatabaseClient Executor。 我正在使用Gradle5,Spring Data R2DBC,Spring Boo