从零开始学习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由一个或者多个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真的很强大哦!

 


posted on 2012-06-27 15:32 想飞就飞 阅读(23997) 评论(5)  编辑  收藏 所属分类: J2EEGroovy/Grails

评论

# re: 从零开始学习Gradle (一)2012-06-29 09:35melin

希望你继续写下去,持续关注你。。。  回复  更多评论  

# re: 从零开始学习Gradle (一)2012-06-29 11:31想飞就飞

谢谢鼓励啊,兄弟!也希望能位Gradle的发展添砖加瓦了  回复  更多评论  

# re: 从零开始学习Gradle (一)2012-06-29 11:49melin

gradle 可以像maven那样创建模板工程? 命令是什么样的?  回复  更多评论  

# re: 从零开始学习Gradle (一)2012-06-29 15:34想飞就飞
@melin
据我所知,Gradle目前还不行,也许以后会有Plugin做这个事情 :)。按我的理解,Gradle是基于DSL的一种构建工具,它的理念不是像Maven那样为你制定好标准流程或者模版。实际上,也正因为如此,Gradle提供了更好的灵活性,你可以使用它来完成任何事情,不仅仅是构建,因为所有的task都完全由Groovy代码来控制,你也可以实现一个这样创建工程模版的task。
Maven,从项目管理的角度考虑,还是做的不错,但被人诟病最多的就是它那单一的对象模型,因为它制定了一套看似标准的流程,对于基本的应用,Maven也许更方便,但随着项目的复杂度增加,它很难扩展而且XML的可读性会很差。按照我目前的理解,我只能回答这么多,不过我们可以继续探讨,呵呵!   回复   更多评论 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值