如何在Gradle中使用自定义Java注释处理器?

Jam*_*mes 6 java android gradle annotation-processing android-studio

我一直在研究一个扩展的简单java注释处理器AbstractProcessor.

我已经能够成功地使用它进行测试 javac -Processor MyProcessor mySource.java

问题是将它集成到使用Android Studio的简单Hello World Android应用程序中.

我开始创建一个新的Android项目,然后添加一个单独的模块,我放置所有的注释处理器代码(MyProcessor类以及它使用的自定义注释).

然后我将这个新模块添加为HelloWorld android项目的依赖项.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':MyProcessorModule')
}
Run Code Online (Sandbox Code Playgroud)

然后,如何使用处理器根据HelloWorld应用程序中的所有源文件生成代码?

Bud*_*ius 3

有一个插件可以让它工作。它与 Maven 上的模块完美配合,不确定本地 .jar 文件,但你一定要尝试一下:

这里是插件页面: https: //bitbucket.org/hvisser/android-apt

这是我的 build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        ... add this classpath to your buildscript dependencies
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt' << apply the plugin after the android plugin

dependencies {
    // in dependencies you call it
    apt 'com.company.myAnnotation:plugin:1.0-SNAPSHOT'
    compile 'com.company.myAnnotation:api:1.0-SNAPSHOT'
Run Code Online (Sandbox Code Playgroud)

它应该有效。

  • 它还适用于本地 jar:`apt files('libs/locallib.jar')` (4认同)