1. 实现的几种方式
1. 直接在 app 的gradle文件中编写
只有当前module可用,可用于本地调试
2. buildSrc工程
只有当前工程可用,重复使用,不可上传
3. 独立module
要配合上传到本地或者远端仓库使用
2. 如何实现
2.1 直接使用
好处: 使用简单,配置简单
缺点: 只能在当前module使用,局限性大
实现方式:
1. 在APP的build.gradle文件中定义plugin
1 2 3 4 5 6 7
| apply plugin: MyPlugin
class MyPlugin implements Plugin<Project> { void apply(Project project) { println "hello this my plugin in module " } }
|
build当前工程,执行 ./gradlew build 即可看到输入
2.2 buildSrc方式
1. 新建 java module 名字 为 buildSrc
2. 配置gradle文件
1 2 3 4 5 6 7 8
| apply plugin: 'java-library' apply plugin: 'groovy'
dependencies { compile gradleApi() compile localGroovy()
}
|
3. 编写plugin实现
1 2 3 4 5 6 7 8 9 10 11
| package fun.wanke.plugin
import org.gradle.api.Plugin import org.gradle.api.Project
class MyPlugin implements Plugin<Project> { void apply(Project project) { println "hello this my plugin in src module " } }
|
4. 在APP中引用完整的类名
apply plugin: fun.wanke.plugin.MyPlugin
5. 执行./gradlew build 验证即可看到输出
2.3 独立module
2.3.1 建立插件工程
独立的module是配置最为复杂,使用灵活的一种实现方式
1. 创建java工程
2. gradle 配置
1 2 3 4 5 6 7 8 9
| apply plugin: 'java-library' apply plugin: 'groovy'
dependencies {
compile gradleApi() compile localGroovy()
}
|
3. 创建插件类
1 2 3 4 5 6 7 8 9 10
| package fun.wanke.plugin
import org.gradle.api.Plugin import org.gradle.api.Project
class MyPlugin implements Plugin<Project> { void apply(Project project) { println "hello this my plugin in standalone " } }
|
4. 创建资源文件,按照以下目录进行
- module
- src
- main
- resources
- META-INF
- gradle-plugin
在main下创建目录,最后我们在 gradle-plugin 文件夹下创建属性文件
fun.wanke.plugin.properties 文件名规则要按照我们plugin所在的包名命名
implementation-class=fun.wanke.plugin.MyPlugin 文件中写入以上信息。value 为 我们的自定义插件完整命名
2.3.2 上传插件到本地仓库
在我们的工程的gradle文件中追加一下信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| apply plugin: 'maven'
repositories { jcenter() mavenCentral() }
group = 'fun.wanke.plugin' version = '0.7'
uploadArchives { repositories { mavenDeployer { repository(url: uri("../repository")) } } }
|
我们配置了maven仓库,并且新建了一个uploadtask,把maven仓库配置为工程所在的根目录
我们同步gradle会在gradle看板中找到一个 uploadArchive的task
执行此task,会在工程根目录生成一个respository文件夹
2.3.3 使用本地仓库的插件
工程根目录配置gradle文件,添加classpath如下
1. classpath 'fun.wanke.plugin:myPlugin:0.7' 组织结构为 [packagename:moduleName:version]
2. respositories 添加maven仓库地址
1 2 3
| maven {// 添加Maven的本地依赖 url uri('./repository') }
|
3. app 的gradle 文件中应用
apply plugin: 'fun.wanke.plugin'
4. clean and make project
代码已托管至
Github ,点击获取