Gradle 自定义插件
Gradle 自定义插件
1.新建项目
配置build.gradle
//使用官方的 `groovy` 插件
apply plugin: 'groovy'
//添加api依赖
dependencies {dependencyHandler ->
dependencyHandler .compile gradleApi()
dependencyHandler. compile localGroovy()
}
//添加当前使用的gradle版本为2.1.3
dependencies { DependencyHandler dependencyHandler ->
dependencyHandler.compile 'com.android.tools.build:gradle:2.1.3'
//dependencyHandler.compile fileTree()
}
创建资源
注意,红框内的两者名保持一致!
2.新建pluginLaunch类
class MyPluginLaunch implements Plugin<Project> {
/**
* 因为是遍历 List 顺序添加的,所以可以在 Plugin 中通过先后顺序一一添加
registerTransform 方法第二个参数是 dependsOn, 可以手动设置依赖关系
* @param project
*/
@Override
public void apply(Project project) {
ZDMLogger.i('Project enable MyPluginLaunch plugin')
project.extensions.create("ccjReleaseInfo",ReleaseInfoExtension) //创建扩展属性
project.tasks.create("ccjReleaseTask",ReleaseInfoTask) //创建自定义任务
}
}
3.新建自定义属性类Extension
该属性可以在gradle中直接使用类似于android{}
class ReleaseInfoExtension extends Extension {
String versionName
String versionCode
String versionInfo
String fileName
@Override
public String toString() {
return "ReleaseInfoExtension{" +
"versionName='" + versionName + '\'' +
", versionCode='" + versionCode + '\'' +
", versionInfo='" + versionInfo + '\'' +
", fileName='" + fileName + '\'' +
'}'
}
}
4.新建自定义Task
用来处理自定义属性ReleaseInfoExtension
中的变量
class ReleaseInfoTask extends DefaultTask{
ReleaseInfoTask() {
group='zdmrouter'
description='the realeaseInfo Task of zdm router'
mustRunAfter()
}
/**
* 在doFitst 和doLast中间执行
*/
@TaskAction
void doAction (){
updateInfo()
}
private void updateInfo(){
String versionCodeMsg=project.extensions.getByName("ccjReleaseInfo").versionCode //其中ccjReleaseInfo为在launcher中定义的变量
ZDMLogger.i( "ReleaseInfoTask.updateInfo.versionCodeMsg>>>>"+versionCodeMsg)
}
}
5.将plugin
发布到jcenter 或者自己搭建的服务器仓库地址.然后进行依赖
//在root项目中的dependencies中
classpath 'com.smzdm:zdm_router_register:1.1.0'
//然后,在使用的地方,;类似于依赖Android插件一样.依赖自己的插件
apply plugin: 'com.smzdm.android.router.register'
6.依赖完成后,可以在apply自定义插件的gradle中进行
配置自定义属性
ccjReleaseInfo {
versionName = "1.0"
versionCode = 1
versionInfo = "versionInfo>>ccjReleaseInfo"
}
运行自定义Task
gradle ccjReleaseTask
或者在gradle面板中直接调用

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Gradle API 以及Task
Gradle 编程框架 1.groovy语法 2.Build Script Block 3.gradle api 前言 1.灵活性上: ANT和Maven 不能在构建过程中,做自定义操作. 2.颗粒度: gradle 代码开源, 根据task编译,可读,可改 3.扩展性 : 可以在gradle脚本中 可以自定义插件.自定义task 4.兼容性 : gralde代码中, 可以继续依赖 maven等框架 执行过程 initliazation 解析整个工程的所有project, 构建project对象 configuration 解析project对象中的task, 构建好 所欲task 的拓扑图 execution 执行具体的task 以及依赖 project API project 树状结构 rootProject 根节点 parentProject 父节点 this.project 当前节点 subProject 子节点 project 中常用api介绍 //给某个project设置属性 project("module-user"){Project project -> } //...
-
下一篇
解决 Android 升级 SDK API 27 过程中遇到的问题
小菜今天升级适配 SDK-API 27,可谓艰难险阻,真的好磨人,记录一下遇到的两个比较重要的问题,希望各位不会掉坑。 问题一 Could not find common.jar 小菜是由 26.1.0 准备升级到 27.1.1,首先是更换 SDK-Version 等,然后下载 SDK,一切正常,等到下载完 sync now 同步时,却报了如下错误: 问题一.png 在网页中打开链接,却是 404; 404.png 查阅网上资料,说涉及到的版本不要用 27.+ 之类的,应替换为准确的版本号,但是小菜用的是明确的 27.1.1,该方案失败; 网上部分大神说,需要在 build.gradle 中添加 maven { url "https://maven.google.com" },但是小菜也都有,并不能直接解决问题,如图: 修改前 build.gradle 之后查阅资料发现在 build.gradle 中 maven 顺序有关系,因为 jcenter 已经删除 android.arch.core 库,需要从 google.com 中下载,小菜调整顺序,rebuild 之后问题解决。 解决后...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- MySQL数据库在高并发下的优化方案
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker容器配置,解决镜像无法拉取问题
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能