Gradle 语法
参考文章:
Gradle学习系列之二——创建Task的多种方法(http://www.cnblogs.com/CloudTeng/p/3417970.html)
Gradle基本知识点与常用配置(https://segmentfault.com/a/1190000006915937)
Gradle 中的语法
目录
1.创建task
cmd: gradle -q [taskname]
-q 表示不打印输出日志信息。即仅显示结果。
task有两个生命周期,配置阶段和执行阶段。
1. << (追加) * 在gradle5.0后会被去掉,建议使用doLast代替。
即向任务名追加执行过程。
task hello << {
println 'hello, this world'
}
2. doLast(执行时加载)和doFirst(配置时加载)
task hello{
doLast{
println "I'm this last"
}
doFirst{
println "I'm this first"
}
}
3. tasks
所有的task都存在一个TaskContainer容器中,是Project的属性。可创建task来查看
task showTask{
println tasks.class
println tasks.size()
}
------------------------------------------------
class org.gradle.api.internal.tasks.DefaultTaskContainer_Decorated
3
4. create
可通过TaskContainer的创建方法来构造task
tasks.create(name:'createTask') {
println "i create my task..."
}
5.dependsOn
task之间的依赖
tasks.create(name:'createTask',dependsOn:'hello') {
println "i create my task..."
}
或
[taskname].dependsOn [taskname]
6.task的属性(Properties)定义
每个task有两个默认的属性 description和 logger,
特定Task会有额外的一些属性(例:Copy有from和to属性)。
使用ext自定义properties
task hello{
doLast{
println hell
println hell2
}
}
hello {
ext.hell = "Hell........"
ext.hell2 = "Hell2...."
description = "description is default's Properties"
}
2.自定义task:
@Optional:表示定义项可选
@TaskAction 表示task要执行的过程
class MyDefineTask extends DefaultTask{
@Optional
String message;
@TaskAction
def hello(){
println "my defined message: $message "
}
}
task helloMy(type: MyDefineTask){
message = "hello world.."
}
task DefineHello(type: MyDefineTask){
message = " my defined...."
}
3. Project:
Gradle在默认情况下已经为Project定义了很多Property,其中比较常用的有:
- project:Project本身
- name:Project的名字
- path:Project的绝对路径
- description:Project的描述信息
- buildDir:Project构建结果存放目录
- version:Project的版本号
1. 自定义Properties(使用ext):
ext{
pro1="I'm defined pro1"
}
或
ext.pro2 = "I'm defined pro2"
println pro2
4. Closure And Action
Closure(闭包)是一段单独的代码块,它可以接收参数,返回值,也可以被赋值给变量。即将一段代码段赋值给一个变量,
可以在调用的地方被使用。<< (Closure) 在gradle5.0已经不被使用,Action代替。
Closure cl = { task -> println "I'm $task.project.name"}
task hello2 << cl
project(':MavenCore') {
task hello2 << cl
}
project(':MavenView') {
task hello2 << cl
}
Closure cl = {task -> println "I'm $task.project.name"}
task hello2{doLast cl}
Action指一段代码段 ,一个Task由多个Action组成。
Gradle 语法的更多相关文章
- Gradle学习系列之三——读懂Gradle语法
在本系列的上篇文章中,我们讲到了创建Task的多种方法,在本篇文章中,我们将学习如何读懂Gradle. 请通过以下方式下载本系列文章的Github示例代码: git clone https://git ...
- Gradle学习系列之读懂Gradle语法
转载地址: http://www.cnblogs.com/CloudTeng/p/3418072.html Gradle是一种声明式的构建工具.在执行时,Gradle并不会一开始便顺序执行build. ...
- Gradle语法基础解析
在从ADT转移到AndroidStudio下开发,必然会遇到Gradle脚本打包的问题.看懂一个脚本最基本的前提就是了解它的语法,我在转移开发环境的过程中,也开始接触学习Gradle,在此做了一些总结 ...
- Gradle学习系列之一——Gradle快速入门
这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...
- Android Studio系列教程四--Gradle基础
Android Studio系列教程四--Gradle基础 2014 年 12 月 18 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://stormzhang ...
- Gradle学习
Gradle是一种构建工具,它抛弃了基于XML的构建脚本,取而代之的是采用一种基于Groovy的内部领域特定语言.近期,Gradle获得了极大的关注,这也是我决定去研究Gradle的原因. 这篇文章是 ...
- android开发系列之gradle认识
后面的系列博客,我将会写一写自己这段时间对于android的学习.认识.体会,希望能够与大家分享. 相信大家从ADT开发切换到android studio最大.最直观的变化就是gradle,因为在an ...
- Gradle学习系列(一)
今天就开始学习Gradle构建了,听说很牛X.本篇内容就带领我初步窥探Gradle的世界. 1.什么是Gradle 相信之前都接触过用Ant或者Meavn进行项目的构建,两者各有千 ...
- 使用gradle构建java项目
gradle是什么东东 gradle是继ant,maven之后另外一种的面向java的自动化项目构建工具,他是基于groovy语言的.相对于ant,maven,gradle显得更加简单. 安装grad ...
随机推荐
- vue-cli 知识点
vue init webpack [project_name] 构建的项目,新增功能需要做的工作: table th:first-of-type { width: 100px; } table th: ...
- LINQ TO SQL 中的join(转帖)
http://www.cnblogs.com/ASPNET2008/archive/2008/12/21/1358152.html join对于喜欢写SQL的朋友来说还是比较实用,也比较容易接受的东西 ...
- POJ2228 Naptime
题目:http://poj.org/problem?id=2228 环形dp.开一维记录当前最后一份时间是否在睡.很精妙地分两类. 1.正常从1到n线性dp. 2.上边只有一种情况未覆盖:第一份时间就 ...
- 导出pb模型之后测试的python代码
链接:https://blog.csdn.net/thriving_fcl/article/details/75213361 saved_model模块主要用于TensorFlow Serving.T ...
- PHP时间处理
1.介绍UNIX时间戳 格林威治时间 2.在PHP类中获取日期和时间 time(); getdate()输出数组 3.日期和时间的格式化 date("H-m-d H:i:s",ti ...
- ORM练习项目-图书管理系统(BMS)实现细节
分析 一本书 可以由多个作者编著 一本书只能由一个出版社出版 一个作者可以写多本书 每个作者有自己的简介 对应关系: Author-Book # 多对多 Publish-Book # 一对多 Auth ...
- TS流的解析
个字节不一定都是有效数据,有一些可能为填充数据). 工作形式: 因为在TS流里可以填入很多种东西,所以有必要有一种机制来确定怎么来标识这些数据.制定TS流标准的机构就规定了一些数据结构来定义.比如: ...
- 微信公众号获取粉丝openid系统
做为一名开发人员,在测试当中也经常需要用到openid,但是微信公众号获取openid的方法也是特别麻烦!网页授权是最常见的方式, 但是网页授权的流程太复杂,不仅要开发,还要在公众号后台设置回调域名( ...
- ASP.NET Web Pages:全局页面
ylbtech-.Net-ASP.NET Web Pages:全局页面 1.返回顶部 1. ASP.NET Web Pages - 全局页面 本章介绍全局页面 AppStart 和 PageStart ...
- python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures
1.用例执行顺序 unittest默认会按照ascii码的顺序,依次执行.类名--方法名排序,使用discover也是默认排序.如果不想使用默认排序,就使用testsuite测试集的方式. impor ...