文档章节

Gradle之尝试使用Gradle

柳哥
 柳哥
发布于 2015/10/17 12:28
字数 744
阅读 88
收藏 1

每个Gradle构建都是以一个脚本开始的。Gradle构建脚本默认名字 build.gradle。当在shell中执行gradle命令时,Gradle会去寻找名字是build.gradle的文件。如果找不到,就会显示一个帮助信息。

让我们在Gradle中实现经典的“Hello world!”例子。首先,你需要创建一个名字为build.gradle的文件。在文件中,定义一个独立的原子性工作。在Gradle的词汇中,叫作task任务)。在这个例子中,task叫helloWorld。要打印信息“Hello World!”,需要使用Gradle的通用语言Groovy,将println命令添加到task的action动作)doLast中。Groovy中的Println方法更简短,它相当于Java中的System.out.println方法。

task hellWorld{
    doLast{
        println 'Hello world!'
    }
}

运行该task:

$ gradle -q helloWorld

通过 -q 定义可选命令行选项quiet,告诉Gradle只输出该task相关的信息

在完全不需要了解Gradle的情况下,你已经开始使用Gradle的DSL了。task和action是这门语言重要的元素。名字为doLast的action几乎自表达了它的含义。它是task执行的最后一个action。Gradle还允许使用一种更精简的方式来指定相同的逻辑。使用左移符号 << 来简单地代表doLast。如:

task helloWorld << {
    println 'Hello world!'
}

我们来看一个更高级的示例:

task startSession << {
    chant()
}
def chant(){
    ant.echo(message: 'Repeat after me ...')            //1
}
3.times{
    task "yayGradle$it" << {                            //2
        println 'gradle rocks'
    }
}
yayGradle0.dependsOn startSession
yayGradle2.dependsOn yayGradle1, yayGradle0            //3
task groupTherapy(dependsOn: yayGradle2)

一开始你可能没有注意到,这个清单中隐藏了很多高级特性。代码中引入了关键字dependsOn来说明task之间的依赖(3处)。Gradle会确保被依赖的task总会在定义该依赖的task之前执行。实际上,dependsOn是task的一个方法。这个后面再详细讲。

我们之前谈到的一个特性是Gradle和Ant有很好的集成(1处)。因为拥有对Groovy语言特性的完全访问权,你还可以使用chant()方法来打印消息。这个方法可以非常方便地在task中调用。每个脚本都带有一个ant属性,它赋予了直接访问ant任务的能力。在这个例子中,你可以使用Ant的任务echo打印出“Repeat after me”信息。

Gradle提供的一个漂亮的特性是定义动态task,这意味着可以在运行时指定它们的名字。你的脚本在循环(2处)中使用Groovy在java.lang.Number中扩展的times方法创建3个新的task。Groovy自动地暴露一个隐式变量 it 来指定循环迭代的次数。你使用这个计数器来构建task的名字。对于第一轮迭代,task可以叫作yayGradle0,然后 yayGradle1,yayGradle2。

现在运行:

$ gradle groupTherapy

注:你也许已经注意到例子中省去了quiet命令行选项,这表示运行该task时,会得到更多的信息。

© 著作权归作者所有

柳哥
粉丝 207
博文 405
码字总数 347782
作品 0
杭州
技术主管
私信 提问
maven用户试用gradle

老话,适合的才是最好的。 此处不做gradle和maven的比较。只说下我,一个偏执的maven用户如何尝试使用gradle的经验。 我用maven好些年了,自己机器上还搭了个nexus。 最近看到有个demo需要g...

大漠小北
2015/01/20
4.3K
21
初识Gradle系列一

初识Gradle系列一 Arccode's blog2017-10-226 阅读 JavaGradle 背景 以前听说过Gradle,也查阅过相关资料,自定义生命周期等等,比Maven牛X, 但Maven在项目中已经够用, 所以一直未做构建迁移. 今...

Arccode's blog
2017/10/22
0
0
Android开发中遇到的的Gradle相关问题总结

Android开发中遇到的的Gradle相关问题总结 snowdream - Impossible is nothing!2017-06-0629 阅读 androidgradle 作者:snowdream Email:yanghui1986527#gmail.com Github: https://github......

snowdream - Impossible is nothing!
2017/06/06
0
0
Gradle的一些笔记(持续更新)

七月份就开始在接触了用gradle构建的项目,但是对于这个软件一直半懂不懂,直到后来在知乎上看到一篇关于如何理解gradle的文章,感觉明白了很多。链接:https://www.zhihu.com/question/3043...

文质斌彬
2016/10/24
56
0
拥抱 Android Studio 之二:Android Studio 与 Gradle 深入

关于学习方式 曾经跟朋友讨论过我们所接受过的大学工科教育,都是一上来先学基础理论,最后再来一个金工实习。一开始不知道为什么而学,学不进去,荒废了基础,等到金工实习的时候,又发现基...

张磊
2016/05/25
128
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
今天
3
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
今天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
今天
19
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
今天
9
0
太全了|万字详解Docker架构原理、功能及使用

一、简介 1、了解Docker的前生LXC LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpa...

Java技术剑
今天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部