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

前提: 安装Gradle。安装过程很是简单:
(1)下载Gradle
(2)将GRADLE_HOME/bin/gradle加入$PATH。

工具

1. 基本概念(Project 和 Task)gradle

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


2. 构建第一个Task
和Ant运行时读取build.xml相似,Gradle运行时默认会读取build.gradle这个文件, 固然你也可使用参数"-b"来指定其余的xxx.gradlethis

下面,让咱们新建一个build.gradle文件,而后输入以下内容:spa

  task hello {
      doLast{
           println "hello world"
      }
 }xml

 这个构建的脚本很简单,就是输出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:io

 

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真的很强大哦!

相关文章
相关标签/搜索