越是深入学习 Android ,就越发感觉到 Gradle 这个构建工具十分强大, Android 插件化都是依赖于 Gradle ,因此有必要学会怎么用 Gradle 来编写插件,从而进一步去理解 Gradle 的自动化构建过程。
由于我同时对 AspectJ 十分感兴趣 ,这里就总结一下我是如何把 AspectJ 做成一个 Gradle 插件 的过程。
Gradle 插件开发
首先新建一个 Java Library Module
,然后手动将工程结构修改为 Groovy
工程结构,也就是将原来的 main 文件夹下的 java 文件夹修改为 groovy :
同时在 Module
里面的 build.gradle
中引入插件开发所需的 gradle
和 groovy
这两个 SDK 的依赖,并把 Module
插件修改为 groovy
和 maven
:
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
compile gradleApi()//gradle sdk
compile localGroovy()//groovy sdk
}
//这里建议使用 Java7
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
repositories {
jcenter()
}
这里也没有什么地方需要特别注意的,毕竟要弄成本地插件,所以需要声明 maven
,还有就是建议这里声明 Java 的版本为 1.7 版本,虽说我电脑安装的环境是 Java 1.8 ,但是发现声明为 1.8 会经常出现编译问题,因此建议这里就声明 1.7 吧。
然后就是在 main
目录下面增加 resources/META-INF/gradle-plugins
这样的文件夹目录结构:
暂时就先让最后的 gradle-plugins 文件夹空着,等下再做处理,那么现在整个 Module
的目录如下:
这样,一个基于 Groovy 的 Gradle
插件 Module
就完成了,我们可以来创建一个 groovy 文件来玩耍了。
在包名下新建一个文件,然后手动将文件后缀名修改为 groovy ,是的,你没有看错,就是这么手动去创建的,目前还没发现有其他什么法子可以让 Android Studio 来自动创建 groovy 文件,就先这么干吧:
新创建的 groovy 需要实现 org.gradle.api.Plugin
接口才可以编译成 Gradle
插件,如下所示:
import org.gradle.api.Plugin
import org.gradle.api.Project
public class AspectjPlugin implements Plugin<Project> {
void apply(Project project) {
println("=============")
println("hello world!")
println("=============")
}
}
一开始就不需要做什么,就只需要和 Gradle
插件打个招呼。
还记得之前的 resources\META-INF\gradle-plugi