1. 安装
(1) 下载最新gradle压缩包,解压到某处。地址是:Gradle web site;
(2) 添加环境变量:
1) 变量名:GRADLE_HOME
变量值:刚才解压的地址,如:E:\gradle-2.8。
2) 为Path变量添加一个值:GRADLE_HOME/bin
3) 测试。在命令行里输入gradle -v,若显示一些gradle信息,说明安装成功。
2. Hello World
gradle中的一切都基于两个概念:project和task;
每次gradle build都是组装一个或多个project。project可能是一个library JAR,也可能是一个web应用,它还能是一个配置(不一定能被Build);
每一个project由一个或多个task组成
例1:
build.gradle
task hello {
doLast {
println 'Hello world!'
}
}
现在你能在命令行中进入该文件所在目录,然后输入命令gradle -q hello 去执行hello任务,你将会在命令行中看到Hello World!。
它的执行过程是当你执行gradle命令时,gradle会在当前目录下寻找build.gradle文件。
build.gradle也被称为build script。另外,命令中-q的意思是不要输出gradle的一些日志信息。
还有一种更简便的task的写法:
task hello << {
println 'Hello world!'
}
在build脚本中还可以使用Groovy语句。
例2:
task upper << {
String someString = 'mY_nAmE'
println "Original: " + someString
println "Upper case: " + someString.toUpperCase()
}
同样,执行命令gradle -q upper,将输出:Original:hElLo wOrLd !(换行)Upper case:HELLO WORLD !
例3:
task count << {
4.times { print "$it " }
}
输出:0 1 2 3。注意:$it 是被双引号包含。
task hello << {
print 'Hello world,'
} task intro(dependsOn: hello) << {
print "I'm Gradle!"
}
输出:Hello world,I'm Gradle!
另外,若想实现Lazy dependsOn(懒依赖),即把依赖任务写到被依赖任务的前面,例如上面想要将intro任务写到hello任务的前面,需要将intro任务中的dependsOn: hello中的hello打上单引号,否则会报Could not find property 'hello' on root project 'test'.错误,即:
task intro(dependsOn: 'hello') << {
println "I'm Gradle!"
} task hello << {
print 'Hello world,'
}
例4:
4.times { counter ->
task "task$counter" << {
println "I'm task number $counter"
}
}
task0.dependsOn task2, task3
执行命令gradle -q task0,输出:
I'm task number 2
I'm task number 3
I'm task number 0
为一个存在的任务添加行为,如下:
例5:
task hello << {
println 'Hello Earth'
}
hello.doFirst {
println 'Hello Venus'
}
hello.doLast {
println 'Hello Mars'
}
hello << {
println 'Hello Jupiter'
}
输出:
Hello Venus
Hello Earth
Hello Mars
Hello Jupiter
例6:
task myTask {
ext.myProperty = "myValue"
} task printTaskProperties << {
println myTask.myProperty
}
输出:myValue
例7:
task loadfile << {
def files = file('你要遍历的路径,可以是相对路径,也可以是绝对路径(注意路径中的斜杠,要么写一个正斜杠,要么写两个反斜杠)').listFiles().sort()
files.each { File file ->
if (file.isFile()) {
ant.loadfile(srcFile: file, property: file.name)
println " *** $file.name ***"
println "${ant.properties[file.name]}"
}
}
}
为了增强代码的灵活性与重用性,可以将一些代码抽取成一个方法,如:
例8:
defaultTasks 'clean', 'run' task clean << {
println 'Default Cleaning!'
} task run << {
println 'Default Running!'
} task other << {
println "I'm not a default task!"
}
输出:
Default Cleaning!
Default Running!
例9:
task distribution << {
println "We build the zip with version=$version"
} task release(dependsOn: 'distribution') << {
println 'We release now'
} gradle.taskGraph.whenReady {taskGraph ->
if (taskGraph.hasTask(release)) {
version = '1.0'
} else {
version = '1.0-SNAPSHOT'
}
}
执行gradle -q distribution
输出:We build the zip with version=1.0-SNAPSHOT
执行gradle -q release 输出:
We build the zip with version=1.0
We release now
gradle学习笔记(1)的更多相关文章
-
gradle学习笔记
一直想着花时间学习下gradle,今天有空.入门一下.参考:极客学院gradle使用指南,官方文档:gradle-2.12/docs/userguide/installation.html,以及百度阅 ...
-
Gradle学习笔记之Groovy
[TOC] Gradle 的核心功能是由Java实现. 在这些功能之上, 有一个使用动态编程语言Groovy编写的领域特定语言(DSL). Gradle的构建脚本build.gradle和settin ...
-
Android Gradle 学习笔记(五):Gradle 任务 Task
在之前的学习中,我们了解到Gradle的构建工作都是由Task组合完成的.本节我们就来介绍一下 Task - 任务. 一.多种方式创建任务 在Gradle中,我们可以有很多种方式来创建任务.为什么有这 ...
-
Android Gradle 学习笔记(四):Gradle 构建脚本
本节我们从整体的角度来介绍一下Gradle. 一.setting.gradle 在Gradle中,定义了一个设置文件,用于初始化以及工程树的配置.设置文件的默认的名字就是setting.gradle, ...
-
Android Gradle 学习笔记(一):Gradle 入门
官网地址:https://gradle.org/. 一.配置 Gradle 环境 安装Gradle之前必须要配置好Java环境,要求JDK 6 以上,并且在环境变量配置好JAVA_HOME.查看Jav ...
-
Gradle学习笔记(1)创建简单的Java项目
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置.当前 ...
-
Android Gradle 学习笔记(六):Gradle 插件
Gradle 本身提供了一些基本的概念和整体核心的框架,其他用于描述真实使用场景的都可以通过插件扩展的方式来实现.这样就可以通过抽象的方式提供一个核心的框架,其他具体的功能和业务都通过插件扩展的方式来 ...
-
Android Gradle 学习笔记(七):Android Gradle 插件
我们知道Android Gradle其实就是一个Gradle的一个第三方插件,它是由Google的Android团队开发的,基于Gradle构建的,和Android Studio完美搭配.相比于旧的构 ...
-
Android Gradle 学习笔记(三):Gradle 日志
在第一节,我们使用到了gradle -q hello命令行来运行Hello World,并对Hello World进行了简单的分析,了解到 gradle -q hello 的意思是要执行的build. ...
随机推荐
-
Python数据类型之“数字(numerics)”
上一节内容说的是"Python基本语法",本节主要讲下Python中的数据类型. 存储在内存中的数据通常有两个属性: 在内存中的存放位置:这个存放位置通过变量名可以找到: 在内存中 ...
-
sass、git、ruby的安装与使用。
安装sass时必须先安装ruby,在安装ruby时勾选Add Ruby executables to your PATH这个选项,添加环境变量,不然以后使用编译软件的时候会提示找不到ruby环境 sa ...
-
Windows下打包Python的exe可执行文件
参考:http://www.cnblogs.com/Lands-ljk/p/5447723.html
-
cmd编译运行Java文件详解
①准备工作 首先用记事本编写HelloWorld.java放至G:\Javaspace路径 public class HelloWorld{ public static void main(Strin ...
-
Java main方法继承
java中main方法是可以继承的 Test1.java package Variables; public class Test1 { public static void main(String[ ...
-
【基础】26个命令玩转linux,菜鸟及面试必备
1 查看目录与文件:ls #显示当前目录下所有文件的详细信息 ls -la 2 切换目录:cd #切换当前目录为/opt/test cd /opt/test 3 显示当前目录:pwd pwd 4 创建 ...
-
3. [mmc subsystem] mmc core(第三章)——bus模块说明
零.说明 对应代码drivers/mmc/core/bus.c. 抽象出虚拟mmc bus,实现mmc bus的操作. 一.API总览 1.mmc bus相关 mmc_register_bus &am ...
-
hcna(华为)_Telnet篇
Telnet提供了一个交互式操作界面,允许终端远程登录到任何可以充当 Telnet服务器的设备.Telnet用户可以像通过Console口本地登录一样对 设备进行操作.远端Telnet服务器和终端之间 ...
-
MQ服务器奔溃解决过程
1.MQ服务器崩溃调节: 今天具安卓前端反应, 从昨天下午开始线上服务器使用 电话号码登陆和 使用电话号码注册功能不能使用, 经过前端仔细排查怀疑是后端问题,之后经过与ios前端 确认, 定位为后端服 ...
-
C#复习笔记(3)--C#2:解决C#1的问题(可空值类型)
可空值类型 C#2推出可空类型来表示可以为null的值类型.这是一个呼声很高的需求,因为在常用的数据库中都是允许某些值类型可为空的.那么为什么值类型就不能为空呢?内存中用一个全0的值来表示null,但 ...