Gradle-在编译期间执行自定义注释处理器

enn*_*ion 5 java annotations gradle

我有一个自定义注释处理器(扩展了AbstractProcessor),该处理器根据注释将属性文件添加到项目中。我希望每次编译时都运行它。该项目是使用gradle的Java项目。

如何使注释处理器在编译期间运行?我应该使用一些编译器插件吗?还是应该编写一个简单的gradle任务来调用此批注处理器,并将该任务作为编译任务的一部分?(我是gradle的初学者)

  • 在META-INF / services中,添加了javax.annotation.processing.Processor条目,指定了自定义注释处理器类。

Nic*_*ico 3

我知道这个问题已经很老了,但由于它甚至得到了帮助,但没有人回答它,我想至少为未来的读者提供一点答案。

为此,有多种可能的方法,具体取决于您的环境设置方式。

例如,您可以在 build.gradle 或所有想要的项目使用的其他一些 .gradle 文件中使用类似的内容:

compileJava{
    options.fork = false 
    options.forkOptions.executable = 'javac'
    options.compilerArgs.addAll(['-classpath','path/to/your/compiled/processor.jar'])
}
Run Code Online (Sandbox Code Playgroud)

当你使用依赖系统时,你可以使用这个:

dependencies {
  compileClasspath group: 'com.company', name: 'AnnotationProcessor', version: 'your revision' 
  //or this
  compileClasspath 'com.company.AnnotationProcessor:revision'
}
Run Code Online (Sandbox Code Playgroud)

但请确保在 src/main/resources/META-INF/services 中有此方法的 .Processor 文件。否则你必须添加compilerArg '-processor','full.package.name.with.class.name'<--这可能是错误的,因为我从未尝试过这种方式。