【问题标题】:Integrating local annotation processor project into gradle build将本地注释处理器项目集成到 gradle build
【发布时间】:2017-07-18 12:40:03
【问题描述】:

我一直在使用 Netbeans 及其默认的基于 ant 的构建集成开发一个 java 项目。由于 ant 的不足,我计划切换到基于 gradle 的构建。

问题是项目被分成三个不同的模块:

  • 注解模块(包含多个注解处理器)
  • 数据库模块
  • UI 模块

UI 模块和数据库模块使用来自注释模块的注释处理器。 UI 模块依赖于数据库模块。

我尝试的构建设置如下所示:

if (!hasProperty('mainClass')) {
    ext.mainClass = ''
}

apply plugin: "net.ltgt.apt"

dependencies {
  compile fileTree(dir: 'lib', include: ['*.jar'])

  apt files('processor/Annotations.jar')
  compileOnly files('processor/Annotations.jar')
}

我尝试动态集成模块,但是 gradle 构建过程没有生成应该由注释处理器生成的类。此外,我已经尝试过使用注解模块的预编译版本,但这也不起作用。

我的问题:

  • 如何集成 annotations-module 以便 gradle 构建工作?
  • 如何将注解模块动态集成到构建过程中?

【问题讨论】:

  • 您的处理器是否有服务声明以供 ServiceLoader 发现?如果没有,您应该添加它们。

标签: java gradle netbeans annotations annotation-processing


【解决方案1】:

通常你会使用project dependency

dependencies {
    compile fileTree(dir: 'lib', include: ['*.jar'])
    apt project(':annotations')
    compileOnly project(':annotations')
}

【讨论】:

  • 此解决方案适用于动态集成注释模块,但构建不会创建带注释的类。是否有一个选项可以指定在 annotations-module 中实现的不同处理器,以便 gradle build 可以识别它们。
  • 既然您知道如何从另一个模块访问annotations.jar,我想您需要查看net.ltgt.apt plugin documentation 才能使用它
猜你喜欢
  • 2013-03-13
  • 2019-09-07
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-13
  • 2017-07-15
  • 1970-01-01
相关资源
最近更新 更多