繁体   English   中英

将注释处理器与Gradle集成

[英]Integrating annotation processors with Gradle

我需要编写一些注释处理器。 我发现这篇博客文章提到了如何在一般环境和Eclipse中完成。

但是我使用的是IntelliJ IDEA和Gradle,并且如果有更好的(如同,不那么繁琐)的方法,那么它就像它一样。 我在找什么:

  1. 我应该能够编写注释处理器和将在同一个项目中使用它们的代码,Gradle应该处理将处理器添加到类路径并在approrpiate阶段使用javac调用它们。
    要么
  2. 如果以上是不可能的,我必须创建两个单独的项目,那么至少应该可以将它们保存在同一个git存储库中。 Gradle应该无缝地处理构建。
    要么
  3. 如果两者都不可能并且我必须创建两个单独的git存储库,那么至少Gradle应该无缝地处理链接博客文章中提到的内容而无需进一步的手动干预。

我的git和Gradle技能是初学者级别的。 我很感激任何帮助这项任务。 谢谢。

是的,可以将处理器移动到分离的模块并从另一个模块使用它(参见下面的querydslapt )。

我建议你实现自己的AbstractProcessor

并使用它:

dependencies {
    ....
    // put dependency to your module with processor inside
    querydslapt "com.mysema.querydsl:querydsl-apt:$querydslVersion" 
}

task generateQueryDSL(type: JavaCompile, group: 'build', description: 'Generates the QueryDSL query types') {
    source = sourceSets.main.java // input source set
    classpath = configurations.compile + configurations.querydslapt // add processor module to classpath
    // specify javac arguments
    options.compilerArgs = [
            "-proc:only",
            "-processor", "com.mysema.query.apt.jpa.JPAAnnotationProcessor" // your processor here
    ]
    // specify output of generated code
    destinationDir = sourceSets.generated.java.srcDirs.iterator().next()
}

你可以在这里找到完整的例子

另一个解决方案(在我看来更干净)可能是有两个子项目 ,然后简单地使包含注释处理器的子项目与主要项目相关。 因此,给定子项目的两个目录:项目根目录中的coreannotation-processors ,您还需要具有以下settings.gradle文件:

include 'core'
include 'annotation-processors'

然后在核心项目的gradle文件中:

dependencies {
    compile project(':annotation-processors')
}

应该这样做,你不必处理自定义编译任务及其类路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM