玩转 Gradle,Plugin本质是什么?剖析个知名插件( 二 )


}
}
}
}
代码比较浅显易懂 , 实现了Plugin接口 , 指定泛型类为Project , 定义了apply方法 , 并注册了一个名为greeting带闭包的Task , 打印一句话 。
②根目录下的build.gradle
//引用javagradle插件开发插件、kotlin支持
plugins{
id'java-gradle-plugin'
id'kotlin'
}
gradlePlugin{
plugins{
greeting{
//插件id
id='cn.coderpig.plugins.greeting'
//插件实现类
implementationClass='cn.coderpig.plugins.CpPluginPlugin'
}
}
}
Tips:网上很多Gradle插件开发教程还要另外配置一个properties文件 , 如:
src/main/resources/META-INF/gradle-plugins/cn.coderpig.plugins.greeting.properties
文件内容如下:
implementation-class=cn.coderpig.plugins.CpPluginPlugin
实际上 , 在build.gradle中声明了gradlePlugin就可以了 , 无需另外再配置一遍!
2.插件本地发布
使用插件可以使用上面的buildSrc方式引入 , 也可以先打成jar包 , 自用就发布到本地 , 分享给别人用就发布到Maven或者JCenter仓库 。 先试试发布到本地吧 , 需要添加Maven相关的配置:
plugins{
//添加maven插件
id'maven'
}
uploadArchives{
repositories.mavenDeployer{
repository(url:uri('C:Users用户名Mavenrepo'))//本地仓库路径
pom.groupId="cn.coderpig.plugins"//唯一标识(通常为模块包名 , 也可以任意)
pom.artifactId="CpPluginPlugin"//项目名称(通常为类库模块名称 , 也可以任意)
pom.version="0.0.1"//版本号
}
}
配置完SyncNow重新构建下项目 , 在Gradle窗口就会多出一个uploda目录 , 里面的uploadArchives就是将插件类库发布到仓库的Task:
玩转 Gradle,Plugin本质是什么?剖析个知名插件
文章图片
双击执行此task , 在C:Users用户名Mavenrepo下生成下述文件:
玩转 Gradle,Plugin本质是什么?剖析个知名插件
文章图片
发布到本地Maven后 , 就可以在另一个项目中引用验证插件效果 , 先修改根目录的build.gradle:
build{
repositories{
...
//本地Maven地址
maven{url'C:Users用户名Mavenrepo'}
}
dependencies{
...
//插件依赖
classpath"cn.coderpig.plugins:cpplugin:0.0.1"
}
app目录或module目录的build.gradle引用此插件:
plugins{
...
id'cn.coderpig.plugins.greeting'
}
接着写一个Task来验证下:
task("testPlugin"){
group("custom")//分组 , 方便找到Task
dependsOn('greeting')//调用插件里的greetingTask , 在执行testPlugin
doLast{println'任务执行完毕'}
}
运行结果如下:
玩转 Gradle,Plugin本质是什么?剖析个知名插件
文章图片
3.插件远程发布
①废弃的JCenter
说到插件远程发布 , 网上十有八九的教程都是传到JFlogBintray 。
打开官网却是大红提示:
玩转 Gradle,Plugin本质是什么?剖析个知名插件
文章图片
其实早在今年的2.3 , 官方就发布了一则通告:
包括GoCenter、Bintray、JCenter在内的多项软件包管理和分发服务都将停止运营 。
包括GoCenter、Bintray、JCenter在内的多项软件包管理和分发服务都将停止运营 。
自3.31后就不在接受任何新的提交 , 在2022.2.1前 , 你还是可以正常拉取2021.3.31前提交的库 。
不能提交的话就只能找找JCenter的替代品咯 , 因为这里编写的是Gradle插件 , 可以试下提交到Gradle的远程仓库 。
②GradlePlugin仓库
完整流程介绍可参见官方文档:HowdoIaddmyplugintothepluginportal?
这里简述下步骤:
先注册个账号(Github授权登录亦可) , 登录后点击生成APIKeys:
复制粘贴到本地gradle配置文件中:HOME_DIR/.gradle/gradle.properties(~/.gradle/gradle.properties)