DEMO地址:
https://github.com/woniupanpa/PluginDemo
1:新建一個Library:插件必須是Library,而不能是Application
2:刪除以下文件,只保留main和build.gradle
3:Library build.gradle設置成如下:
apply plugin: 'groovy' apply plugin: 'maven' repositories { jcenter() mavenCentral() } dependencies { compile gradleApi() compile localGroovy() } //設置maven deployer uploadArchives { repositories { mavenDeployer { //設置插件的GAV參數 pom.groupId = 'com.yjm.plugin' pom.artifactId = 'test' pom.version = '1.0.0' //文件發布到下面目錄 repository(url: uri('../repo')) } } }
uploadArchives表示的是打包插件到本地倉,sync gradle之后,Gradle列表會出現uploadArchives,后續點擊該按鈕就可以打包插件到本地倉。
4:添加plugin.groovy文件:
package com.yjm import org.gradle.api.Plugin import org.gradle.api.Project class YjmPlugin implements Plugin<Project> { @Override void apply(Project project) { project.task("yjm"){ System.out.println("======================") System.out.println("my name is yjm") System.out.println("======================") } } }
5:添加properties文件,resources在main目錄下,resource/META-INFO/gradle.plugins(注意是META-INFO/gradle.plugins而不是META-INFO.gradle.plugins)下面生成com.yjm.plugin.properties文件,改名字可以任意命名,
后續應用引用插件的名字就是用該名字:app plugin: 'com.yjm.plugin',注意properties是后綴,引用的時候不能加上properties
com.yjm.plugin.properties:
implementation-class=com.yjm.YjmPlugin
com.yjm.YjmPlugin表示的是plugin所在的位置。
6:上傳插件到本地,點擊uploadArchives
執行成功之后,會在根目錄出現repo目錄:說明上傳到本地倉成功。
該目錄的路徑,是前面build.gradle決定的:groupId: artifactId:version
//設置maven deployer uploadArchives { repositories { mavenDeployer { //設置插件的GAV參數 pom.groupId = 'com.yjm.plugin' pom.artifactId = 'test' pom.version = '1.0.0' //文件發布到下面目錄 repository(url: uri('../repo')) } } }
7:主應用配置該插件:
app build.gradle添加如下配置:sync gradle
classpath路徑就是前面uploadArchives 所定義的:groupId: artifactId:version
buildscript{ repositories{ jcenter() maven{ url uri('../repo') } } dependencies{ classpath 'com.yjm.plugin:test:1.0.0' } }
apply plugin: 'com.yjm.plugin'
8:點擊PluginDemo 的task里面的yjm任務(該任務定義在插件project里面),成功打印出插件task的內容,說明引用該插件成功。
9:添加task如何更新:
添加一個task2 的任務,點擊upload里面的uploadArchives,更新插件到本地倉
然后同步項目的gradle:
同步成功之后,發現這里多了一個taks yjm2