Gradle笔记系列(二)
1、使用Gradle命令行
在这篇博客中,我们将简要介绍Gradle命令行的使用。
1.1 执行多任务
通过在命令行列出每个任务(task),你可以在一次构建(build)中执行多个任务。例如,命令gradle compile test会执行compile和test这两个任务,Gradle按照任务在命令行列出的顺序依次执行每个任务,同时也会执行每个任务的依赖任务。每个任务不管如何被包含在build中,它只会被执行一次(不管它是被指定在命令行中,或者是作为另一个task的依赖出现,或者两者兼有)。看一个例子,下图列出了4个任务,其中dist和test都依赖于compile。

build.gradle
task compile << {
println 'compiling source'
}
task compileTest(dependsOn: compile) << {
println 'compiling unit tests'
}
task test(dependsOn: [compile, compileTest]) << {
println 'running unit tests'
}
task dist(dependsOn: [compile, test]) << {
println 'building the distribution'
}
build.gradle
执行命令gradle dist test,输出结果如下
C:\Users\Administrator\Desktop\gradle>gradle dist test
:compile
compiling source
:compileTest
compiling unit tests
:test
running unit tests
:dist
building the distribution BUILD SUCCESSFUL Total time: 2.012 secs
从上面输出结果可以看出,每个任务只被执行了1次,因此gradle test test与gradle test效果完全一样。
1.2 移除任务
你可以通过-x命令参数移除task,依然以上述代码为例,下面是测试结果输出
C:\Users\Administrator\Desktop\gradle>gradle dist -x test
:compile
compiling source
:dist
building the distribution BUILD SUCCESSFUL Total time: 1.825 secs
通过上述输出结果可以看出,任务test没有被执行,即便它被dist所依赖。同时你也会注意到任务test所依赖的任务之一compileTest也没有被执行,同时被test和dist所依赖的任务(如compile)仍然被执行了。
1.3 出错时的继续build
默认情况下,当gradle构建过程中遇到任何task执行失败时将会立刻中断。这样运行你马上去解决这个构建错误,但是这样也会隐藏可能会发生的其他错误。为了在一次执行过程中尽可能暴露多的错误,你可以使用--continue选项。当你执行命令的时候加上了--continue选项,Gradle将会执行每个任务的所有依赖,而不管失败的发生,而不是在第一个错误发生时就立马停止。在执行过程中所发生的所有错误在构建的结尾都会被列出来。如果一个任务失败了,随后其他依赖于这个任务的子任务,这么做是不安全的。例如,如果在test代码里面有一个编译错误,test任务将不会执行;由于test任务依赖于compilation任务(不管是直接还是间接)。
1.4 简化task名字
在命令行指定task时,我们不需要给出任务的全名,只需要给出能够足够唯一标识某个任务的简化的名字即可。例如,在上面的例子中,我们可以使用gradle di命令来执行task dist。此外,当task名是由多于1个的单词构成时,我们也可以使用每个单词的首字母作为task名的简化形式。比如一个名字为compileTest的task,我们可以使用命令:gradle cT来进行编译(或者使用gradle compTest)。简化后的task名字也适用-x选项。
1.5 选择性的执行某个build文件
当我们执行gradle命令时,会在当前路径下寻找build文件。可以使用-b选项指定另一个build文件。如果指定了-b选项,那么settings.gradle文件将不会起作用。看例子:
subdir/myproject.gradle:
task hello << {
println "using build file '$buildFile.name' in '$buildFile.parentFile.name'."
}
执行命令:gradle -q -b subdir/myproject.gradle hello输出结果如下:
using build file 'myproject.gradle' in 'subdir'.
或者,可以使用-p选项指定要使用的工程目录。对多工程编译时,应该使用-p选项而不是-b选项。例子:
subdir/build.gradle
task hello << {
println "using build file '$buildFile.name' in '$buildFile.parentFile.name'."
}
执行命令:gradle -q -p subdir hello输出结果如下:
using build file 'build.gradle' in 'subdir'.
如果使用其它构建文件名,可与-b一起使用:gradle -q -p subdir -b subdir/myproject.gradle hello
Gradle笔记系列(二)的更多相关文章
- Python基础笔记系列二:分支和循环
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 分支:即是if-else和if-elif-else语句 循环:即是whil ...
- Gradle笔记系列(一)
1.Gradle概述 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的 ...
- JavaWeb前端基础复习笔记系列 二
课程:孔浩前端视频教程(JavaScript系列:1~5讲) <html> <head> <title></title> <!--html只负责显 ...
- 《ASP.NET Core In Action》读书笔记系列二 ASP.NET Core 能用于什么样的应用,什么时候选择ASP.NET Core
ASP.NET Core 能用于什么样的应用 ASP.NET Core 可以用作传统的web服务.RESTful服务.远程过程调用(RPC)服务.微服务,这归功于它的跨平台支持和轻量级设计.如下图所示 ...
- 【系列教程1】Gradle入门系列二:第一个Java项目
这篇教程的主要内容是讲解如何用Gradle编译和打包一个简单的Java项目. 该Java项目只有一个需求:我们的构建脚本必须创建一个可执行的Jar文件,换句话说,我们必须能够使用命令java -jar ...
- 框架SpringMVC笔记系列 二 传值
主题:SpringMVC(第一节中再回顾复习一次) 学习资料参考网址: 1.http://www.icoolxue.com 2.http://haohaoxuexi.iteye.com/blog/13 ...
- Java基础复习笔记系列 二
1.Java中Static的相关用法总结?(静态方法:静态变量:静态代码块) public static void main(String args[])执行的关键,在于有static.有了stati ...
- JNI 学习笔记系列(二)
c中没有Boolean类型的值,一般是使用1表示true,0表示false,c中也没有String类型的数据,c中的字符串要通过char数组来表示.c中没有byte类型,一般用char表示byte类型 ...
- Windows-universal-samples学习笔记系列二:Controls, layout, and text
Controls, layout, and text AutoSuggestBox migration Clipboard Commanding Context menu Context menu ( ...
随机推荐
- Maven多环境打包
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- MongoDB学习笔记(索引)
一.索引基础: MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧.下面是创建索引的命令: > db.test.ensureIndex({" ...
- SQL Server提高事务复制效率优化(四)修改数据同步过程优化
1.原理 我说的数据修改同步过程指的是在快照生成完毕,分发代理将快照应用于订阅服务器完成订阅服务器初始化后,发布服务器后续的更改同步到订阅服务器过程,这也就是我们常常关注的延迟.此过程主要 ...
- Yaf框架下类的自动加载
前面两篇博客分别讲述了PHP自带的类加载和composer中类的自动加载,其实Yaf框架也实现了基于PSR0和PSR4的类的自动加载.根据我对Yaf下类的自动加载方式的理解写下这篇博客.由于接触Yaf ...
- 移动端自动化环境搭建-Appium Client的安装和AppiumLibrary库的安装
A.安装依赖 appium client是配合原生的webdriver来使用的(特别是用java而不用maven的同学),因此二者必须配合使用缺一不可. B.安装过程 1.在线安装 pip insta ...
- Java开发环境配置
JDK下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html 安装:双击exe文件一直下一步就Ok了. 环境变 ...
- iOS内存管理
iOS内存管理的方式是引用计数机制.分为MRC(人式引用计数)和ARC(自动引用计数). 为什么要学习内存管理? 内存管理方式是引用计数机制,通过控制对象的引用计数来实现操作对象的功能.一个对象的生命 ...
- HUSTOJ搭建实录
要做一个MOOC平台,要求有在线编程功能,想偷个懒,于是用了HUSTOJ...... 系统:Ubuntu14.04 Kylin 步骤: 一.搭建服务器和相应环境 apache2: sudo apt-g ...
- 深入了解jQuery之整体架构
本文是在阅读了Aaron艾伦的jQuery源码解析(地址:http://www.imooc.com/learn/172)后的个人体会以及笔记.在这里感谢艾伦老师深入浅出的讲解!! 先来看看如何生成一个 ...
- hive中拉链表
在有些情况下,为了保持历史的一些状态,需要用拉链表来做,这样做目的在可以保留所有状态的情况下可以节省空间. 拉链表适用于以下几种情况吧 数据量有点大,表中某些字段有变化,但是呢变化的频率也不是很高,业 ...