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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启