gradleAPI介绍
来源:互联网 发布:淘宝做分销有成功的吗 编辑:程序博客网 时间:2024/06/18 17:26
Gradle 构建块
基本模块project、task、property。
Project接口描述
代表一个正在构建的组件,如jar文件,或者一个目标,如部署应用程序。构建进程启动后Gradle基于build.gradle配置实例化Project类,其API接口及其重要方法如下:[org.gradle.api.Project]
构建脚本配置 apply(options:Map) buildscript(config:Closure)依赖管理 dependencies(config:Closure) configurations(config:Closure) getDependencies() getConfigrations()getter/setter属性 ant name description group path version logger创建文件 file(path:Object) file(path:Object...) fileTree(baseDir:Object)创建task task()任务接口task 任务动作和任务依赖
Task接口描述 org.gradle.api.Task,代表一个执行的任务。
task依赖
dependsOn(tasks:Object…)
动作定义 doFirst(action :Closure) doLast(action:Closure) getActions()输入输出数据声明 getInputs() getOutputs()getter和setter属性 getAnt() getDescription() getEnabled() getGroup() setDescription(description:String) setEnabled(setabled:boolean) setGroup(group:String);
属性:任务或项目的描述,如何扩展属性呢,属性以k-v形式存储,添加属性需要使用ext命名空间。
project.ext.myPro= 'myValue'ext{ name = 'zhao'; age = 11;}当然Gradle属性可以通过gradle.properites文件中声明直接添加到项目。 一般位于<USER_HOME>/.gradle 或者项目根目录下。 前面的方式大多用来声明自定义变量,Gradle也提供了很多其他方式为构建提供属性,例如: 项目属性通过-P 命令行选项提供 系统属性通过-D 命令行选项提供 环境属性可以参考如下模式提供ORG_GRADLE_PROJECT_myproper=myValue
task动作
action是在task中合适的地方放置构建逻辑,Task提供了两个相关的方法来声明task动作,doFirst(Closure)和doLast(Closure),当task被执行,动作逻辑被定义为闭包参数被依次执行。
Gradle 构建生命周期阶段
任何时候执行Gradle构建,都会运行三个不同的生命周期阶段:
初始化 gradle为项目创建Project实例配置 gradle构造了模型来表示任务,并参与到构建中,增量式构建特性决定了模型中的task是否需要被运行,每一次构建,任何配置代码都被执行。执行 task安装依赖被一次执行。声明task的inputs和outputs通过这两个属性,来决定任务是否是最新的。task的inputs和outpus是在配置阶段执行的用来连接task依赖。这就需要在配置块中被定义的原因,确保inputs和outputs的值在配置期是可以访问的。若需要编程获得输出,那么可以通过TaskOutputs上的upToDateWhen(Closure)方法来实现,与常规的inputs和outputs相比,这个方法是在执行期间执行。若闭包返回true,则task会被认为是最新的。通过version的属性文件,读取项目版本```task printVersion1{ doLast{ group='version' description='print version'// version = new ProjectVersion(1,0,true); logger.quiet "Version $version"; }}class ProjectVersion{ Integer major; Integer minor; Boolean release; ProjectVersion(Integer ma,Integer mi,Boolean rel){ this.major=ma; this.minor=mi; this.release = rel; } String toString(){ "$major . $minor $release"; }}ext{ versionFile=file('version.properties');}ProjectVersion readVersion(){ logger.quiet 'read version from version.properties'; if(!versionFile.exists()){ throw new Exception("version.proversion not exists"); } Properties properties = new Properties() versionFile.withInputStream{ stream -> properties.load(stream); } new ProjectVersion(properties.major.toInteger(),properties.minor.toInteger(),properties.release.toBoolean());}task loadVersion{ project.version=readVersion();}//通过ant操作属性文件task makeRelease{ inputs.property('release',version.release); outputs.file versionFile; doLast(){ version.release=true; ant.propertyfile(file:versionFile){ entry(key:'release',type:'string',operation:'=',value:'true'); } }}```
阅读全文
0 0
- gradleAPI介绍
- 介绍
- 介绍
- 介绍
- 介绍
- 介绍
- 介绍
- 介绍
- 介绍
- 介绍
- 介绍
- 介绍
- 介绍
- 介绍
- 介绍
- 介绍
- 介绍
- 介绍
- Java Web笔记(三)
- 欢迎使用CSDN-markdown编辑器
- 冒泡排序
- html&css-------图像(11/6)
- 解决Qt5中的QSerialPort分多次接收串口数据的问题
- gradleAPI介绍
- kafka 发送消息
- 安装msi文件时出现2503、2502的错误。
- 数据结构-线性表初探
- 电力系统中的定值区是什么意思
- android studio中出现gradle编译失败: Could not resolve all dependencies for configuration ':app:_debugApkCop
- Android数据库Sqlite查询显示到ListView控件
- 递归
- 【二叉树】统计成绩出现的次数