前面两篇写了
Gradle在Android工程中的运用
Groovy简单了解
这篇写一下AndroidStudio中自定义Gradle插件
在一个项目中新建module
AndroidStudio自动生成的目录是这样的
把没用的都删掉,成了下面这样
改造成下面这样。其中MyPlugin是一个groovy文件,完整名为MyPlugin.groovy(所以新建的时候要new file 然后命名为***.groovy)。
然后com.feng.mygradle.properties文件为资源目录文件。
com.feng.mygradle.properties中代码为
implementation-class=com.feng.myplugin.MyPlugin
build.gradle文件这样写,注意group和version为引用时需要的。
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
// group:modulename:version
compile 'com.android.tools.build:gradle:3.0.1'
compile 'org.javassist:javassist:3.20.0-GA'
//gradle sdk
compile gradleApi()
//groovy sdk
compile localGroovy()
}
repositories {
mavenCentral()
}
group='com.feng.myplugin'
version='0.0.1'
uploadArchives {
repositories {
mavenDeployer {
//提交到远程服务器:
// repository(url: "http://www.xxx.com/repos") {
// authentication(userName: "admin", password: "admin")
// }
//本地的Maven地址设置为'../repo'
repository(url: uri('../repo'))
}
}
}
简单写一个插件类。Project在之前文章有提过,具体关于Project的api可以查阅gradle官网
package com.feng.myplugin
import org.gradle.api.Plugin
import org.gradle.api.Project
public class MyPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
println("this is MyPlugin")
}
}
在根目录的build.gradle文件的repositories{ ... }中添加本地仓库的地址。(此处我们吧插件上传到本地仓库,当然也可以上传到远程仓库)
maven {
url uri('./repo')
}
在根目录的build.gradle文件的dependencies{ ... }中添加依赖
// group:modulename:version
classpath 'com.feng.myplugin:myplugin:0.0.1'
// 在需要引用插件的module的build.gradle中引用即可。
// 插件名 就是我们定义的资源目录名(com.feng.mygradle.properties)
apply plugin: 'com.feng.mygradle'