Android Studio(Gradle)中的java library模块如何使用annotation processor tool(注解处理工具)

背景:

项目包含了android application、android library、java library类型的模块,具体地有annotation模块(java)、processor模块(java)、common模块(java)、app模块(android),processor是注解处理器,为common模块和app模块里面使用了annotation模块中的注解来生成代码到各自模块的build目录下。

问题:

android application和android library类型的模块中,直接在build.gradle配置annotationProcessor即可自动生成代码并且引用之(生成OK、打包OK、import OK),如下:

dependencies {

annotationProcessor project(':processor')

}

但是在java library类型的模块中,无法在build.gradle中使用annotationProcessor,只是compile project(':processor')后并不能import成功,虽然项目可以编译成功。

解决:

https://stackoverflow.com/questions/47262516/error24-0-could-not-find-method-annotationprocessor-for-arguments-com-goo?rq=1

通过使用java library的apt插件来解决(对应了android的annotationProcessor),参考如下的project structure和gradle配置:

Project:

01-annotation: java library,注解

02-processor: java library,注解处理器

03-common : java library

04    -build/classes  编译后的class文件

05    -build/generated  自动生成的java文件

06    -src/main/java/com.example.common

07    -build.gradle

08        apply plugin: 'java'

09        apply plugin: "net.ltgt.apt"

10        buildscript {

11            repositories {

12                maven {

13                    // url "https://plugins.gradle.org/m2/"  // 需要配置证书

14                    url "./repo"// 可以通过浏览器下载jar和pom到本地模块下的路径repo\net\ltgt\gradle\gradle-apt-plugin\0.18

15                }

16            }

17            dependencies {

18                classpath "net.ltgt.gradle:gradle-apt-plugin:0.18"

19            }

20        }

21        dependencies {

22            implementation fileTree(include: ['*.jar'], dir: 'libs')

23            implementation project(':annotation')

24            apt project(':processor')

25        }

26        sourceSets {

27            main {

28                java.srcDirs = ['src/main/java', 'build/generated/source/apt/main']

29            }

30        }

31        tasks.withType(JavaCompile) {

32            options.encoding = "UTF-8"

33        }

34        sourceCompatibility = "1.8"

35        targetCompatibility = "1.8"

36 

37-app : android application

38    -build/generated

39    -src/main/java/com.example.android

40    -build.gradle

你可能感兴趣的:(Android Studio(Gradle)中的java library模块如何使用annotation processor tool(注解处理工具))