从零开始学习Gradle之一---初识Gradle

前提: 安装Gradle。安装过程非常简单:

(1)下载Gradle

(2)将GRADLE_HOME/bin/gradle加入$PATH。

1. 基本概念(Project 和 Task)

Gradle中有两个基本的概念:project和task。每个Gradle的构建由一个project构成,它代表着需要被构建的组件或者构建的整个项目。每个project由一个或者多个task组成。task代表着Gradle构建过程中可执行的最小单元。例如当构建一个组件时,可能需要先编译、打包、然后再生成文档或者发布等,这其中的每个步骤都可以定义成一个task。

2. 构建第一个Task

和Ant运行时读取build.xml类似,Gradle运行时默认会读取build.gradle这个文件, 当然你也可以使用参数"-b"来指定其他的xxx.gradle

下面,让我们新建一个build.gradle文件,然后输入如下内容:

task hello {

doLast{

println "hello world"

}

}

这个构建的脚本很简单,就是输出hello world。为了运行这个构建,我们应该在当前目录下执行 "gradle hello",即gradle TaskName。

doLast意思是定义一个行为(映射Gradle中的Action类),放在当前task的最后,类似的,还有doFirst, 表示将定义的行为放在当前task最前面,例如

task hello {

doLast{

println "Hello world"

}

doFirst{

println "I am xxx"

}

}

执行gradle hello, 将输出

"I am xxx"

"Hello world"

另外,你也可以使用如下更简洁的方式来定义task:

task hello <<  {

println "hello world"

}

这里也许大家可能会觉得很奇怪,为什么可以用"<<"来定义Task的执行内容呢,还是让我们看看Gradle的代码是怎么实现的吧:

1 public abstract class AbstractTask implements TaskInternal, DynamicObjectAware {

2   private List<Action<? super Task>> actions = new ArrayList<Action<?   super Task>>();

3

4   public Task doFirst(Action<? super Task> action) {

5         if (action == null) {

6             throw new InvalidUserDataException("Action must not be null!");

7         }

8         actions.add(0, wrap(action));

9         return this;

10     }

11

12    public Task doLast(Action<? super Task> action) {

13         if (action == null) {

14             throw new InvalidUserDataException("Action must not be null!");

15         }

16         actions.add(wrap(action));

17         return this;

18     }

从上面的代码可以看出,Task类里有个Action的集合actions,当使用doFirst或者doLast时,实际上是将定义的执行部分实例化成Action的对象,然后添加到actions集合里。

明白了这一点,接下来让我们看看为什么可以使用<<定义Task--------Groovy作为强大的支持DSL的动态语言,早已经重载了 << 操作符,使得我们可以方便的使用<<向集合添加元素。

说道这,相信真相已经大白了:原来就是使用Groovy的特性,往集合里添加Action而已。对,这就是Gradle的语法,利用Groovy的DSL特性,帮助我们更容易的定义我们的构建脚本。

不过也许大家会觉得,这个例子实在是没有什么代表性,只是一个简单的 hello world,说明不了什么问题。好吧,别着急,下次我们会继续研究Gradle的其他部分,不过先记住:作为一个构建工具,Gradle真的很强大哦!

时间: 2024-10-08 18:45:43

从零开始学习Gradle之一---初识Gradle的相关文章

【转】从零开始学习Gradle之一---初识Gradle

原文:http://www.blogjava.net/wldandan/archive/2012/06/27/381605.html 前提: 安装Gradle.安装过程非常简单: (1)下载Gradle(2)将GRADLE_HOME/bin/gradle加入$PATH. 1. 基本概念(Project 和 Task) Gradle中有两个基本的概念:project和task.每个Gradle的构建由一个project构成,它代表着需要被构建的组件或者构建的整个项目.每个project由一个或者多

【转】从零开始学习Gradle之二---如何使用Task

原文:http://www.blogjava.net/wldandan/archive/2012/07/05/382246.html 上一篇文章中,我们提到了Gradle的一些基本概念,如Project.Task以及Action,并且创建了我们的第一个Task.这次我们来看看Gradle中关于Project和Task的更多细节. 1. Project和Task 对于build.gradle配置文件,当运行Gradle <Task> 时,Gradle会为我们创建一个Project的对象,来映射b

Gradle系列之初识Gradle

原文首发于微信公众号:躬行之(jzman-blog) 学习 Android 有一段时间了,开发中经常使用到 Gradle ,但是不知道 Gradle 构建项目的原理,计划花一点时间学习一下 Gradle 相关的知识.Gradle 是一个非常优秀的项目构建工具,其 DSL(领域特定语言)基于 Groovy 实现,大部分功能通过插件的方式来实现,也可以自定义 Gradle 插件,下面开始入门 Gradle 系列的第一篇. 配置 Gradle 环境 首先确保在环境变量中配置好 JAVA_HOME,使用

Android(java)学习笔记127:Android Studio新建工程中的build.gradle、settings.gradle

随着信息化的快速发展,IT项目变得越来越复杂,通常都是由多个子系统共同协作完成.对于这种多系统.多项目的情况,很多构建工具都已经提供了不错的支持,像maven.ant.Gradle除了借鉴了ant或者maven的继承的方式定义子项目,也提供了一种更为方便的集中配置的方式,大大减少了构建带来的复杂度.除此之外,Gradle还提供了清晰的Project树模型来映射多项目的组织结构.下面,让我们了解一下如何使用Gradle构建多项目. 1.多项目的定义和结构 Mulit project 设置是grad

Gradle笔记——关于Gradle 1.12

如果你能进来看这篇文章,相信你对Gradle也有一个简单了解.这里也不再叙述它相对于其他构建工具的优势,而是介绍一下Gradle 1.12这个版本. 到目前为止,Gradle已经出到2.1版本了,为什么还从1.12这个版本开始介绍?主要的原因是我使用Gradle是Android开发所需要.公司里面是采用Android Studio来进行Android项目的开发的,而公司里普遍用的还是Android Studio的0.8.4及其之前的版本,暂时还不能更新到2.0或更新的版本.另外,Gradle1.

多个 gradle 文件夹 \.gradle\wrapper\dists\ 设置gradle不是每次都下载

韩梦飞沙  韩亚飞  [email protected]  yue31313  han_meng_fei_sha 设置gradle不是每次都下载 \.gradle\wrapper\dists\ ======= 在你导入项目的时候,有个选项的: 你要是选了Use default gradle mapper就会下载一次,Use local gradle distribution就会用你制定的gradle了 ====== 设置gradle不是每次都下载 \.gradle\wrapper\dists\

从零开始学习C#——HelloWorld(一)

从零开始学习C# 老规矩Hello World 您的第一个程序 visual studio 如何使用就不说了 //编程的开始,Hello World! program in C# using System; namespace HelloWorld { class Hello { static void Main() { System.Console.WriteLine("Hello World!");//编程人生就是从这里开始的 System.Console.ReadKey();//

eclipse gradle插件 org.gradle.tooling.GradleConnectionException: Could not install Gradle distribution from &#39;https://services.gradle.org/distributions/gradle-3.4-bin.zip&#39;.

eclipse安装gradle后出现如下异常: org.gradle.tooling.GradleConnectionException: Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradle-3.4-bin.zip'.    at org.gradle.tooling.internal.consumer.DistributionFactory$ZippedDist

从零开始学习jQuery (三) 管理jQuery包装集

本系列文章导航 从零开始学习jQuery (三) 管理jQuery包装集 一.摘要 在使用jQuery选择器获取到jQuery包装集后, 我们需要对其进行操作. 本章首先讲解如何动态的创建元素, 接着学习如何管理jQuery包装集, 比如添加,删除,切片等. 二.前言 本系列的2,3篇上面列举了太多的API相信大家看着眼晕. 不过这些基础还必须要讲, 基础要扎实.其实对于这些列表大家可以跳过, 等以后用到时再回头看或者查询官方的API说明. 本章内容很少, 主要讲解动态创建元素和操作jQuery