1、Gradle概述

  Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。

2、Gradle特性

2.1 基于声明和约定的构建

  Gradle的核心在于基于Groovy丰富而又可扩展的特定领域描述语言(DSL)。Groovy通过声明性的语言元素将基于声明的构建推向下层,你可以按你想要的方式进行组合。这些元素同样也为支持Java、Groovy、OSGi、Web和Scala项目提供了基于约定的构建。并且,这种声明性的语言是可扩展的。你可以添加新的或增强现有的语言元素。因此,它提供了简明、可维护和易理解的构建。

2.2 基于编程的语言依赖

  声明性语言优点在于通用任务图,你可以充分将其应用在构建中。它提供了最大限度的灵活性,以让Gradle适应你的特殊需求。

2.3 构建结构化

  Gradle的灵活和丰富性最终能够支持在你的构建中应用通用的设计模式。 例如,它可以很容易地将你的构建拆分为多个可重用的模块,最后再进行组装,但不要强制地进行模块的拆分。 不要把原本在一起的东西强行分开(比如在你的项目结构里),从而避免让你的构建变成一场噩梦。 最后,你可以创建一个结构良好,易于维护,易于理解的构建。

2.4 深度API

  Gradle允许你在构建执行的整个生命周期,对它的核心配置及执行行为进行监视并自定义。

2.5 Gradle的可扩展性

  Gradle有非常良好的扩展性。 从简单的单项目构建,到庞大的多项目构建,它都能显著地提升你的效率。 这才是真正的结构化构建。通过最先进的增量构建功能,它可以解决许多大型企业所面临的性能瓶颈问题。

2.6 多项目构建

  Gradle对多项目构建的支持非常出色。项目依赖是首先需要考虑的问题。 我们允许你在多项目构建当中对项目依赖关系进行建模,因为它们才是你真正的问题域。 Gradle遵守你的布局。

2.7 多种方式管理依赖

  不同的团队喜欢用不同的方式来管理他们的外部依赖。 从Maven和Ivy的远程仓库的传递依赖管理,到本地文件系统的jar包或目录,Gradle对所有的管理策略都提供了方便的支持。

2.8 Gradle是第一个构建集成工具

  Ant tasks是最重要的。而更有趣的是,Ant projects也是最重要的。 Gradle对任意的Ant项目提供了深度导入,并在运行时将Ant 目标(target)转换为原生的Gradle 任务(task)。 你可以从Gradle上依赖它们(Ant targets),增强它们,甚至在你的build.xml上定义对Gradle tasks的依赖。Gradle为属性、路径等等提供了同样的整合。

2.9 易于移植

  Gradle能适应你已有的任何结构。因此,你总可以在你构建项目的同一个分支当中开发你的Gradle构建脚本,并且它们能够并行进行。 我们通常建议编写测试,以保证生成的文件是一样的。 这种移植方式会尽可能的可靠和减少破坏性。这也是重构的最佳做法。

2.10 Groovy

  Gradle的构建脚本是采用Groovy写的,而不是用XML。 但与其他方法不同,它并不只是展示了由一种动态语言编写的原始脚本的强大。 那样将导致维护构建变得很困难。 Gradle的整体设计是面向被作为一门语言,而不是一个僵化的框架。 并且Groovy是我们允许你通过抽象的Gradle描述你个人的story的黏合剂。 Gradle提供了一些标准通用的story。这是我们相比其他声明性构建系统的主要特点。 我们的Groovy支持也不是简单的糖衣层,整个Gradle的API都是完全groovy化的。只有通过Groovy才能去运用它并对它提高效率。

2.11 The Gradle wrapper

  Gradle Wrapper允许你在没有安装Gradle的机器上执行Gradle构建。 这一点是非常有用的。比如,对一些持续集成服务来说。 它对一个开源项目保持低门槛构建也是非常有用的。 Wrapper对企业来说也很有用,它使得对客户端计算机零配置。 它强制使用指定的版本,以减少兼容支持问题。

2.12 自由和开源

  Gradle是一个开源项目,并遵循ASL许可。

3、Gradle安装

  目前Gradle的最新版本是2.14,可以在Gradle官网下载:https://gradle.org/gradle-download/,Gradle的其它版本可以在http://services.gradle.org/distributions下载。这里我使用的是2.10版本(gradle-2.10-all.zip),下载后加压,设置环境变量GRADLE_HOME,添加GRADLE_HOME/bin到Path环境变量即可。在命令行执行gradle -v命令回车,出现下面结果说明Gradle安装成功。

------------------------------------------------------------
Gradle 2.10
------------------------------------------------------------

Build time: 2015-12-21 21:15:04 UTC
Build number: none
Revision: 276bdcded730f53aa8c11b479986aafa58e124a6

Groovy: 2.4.4
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.8.0_92 (Oracle Corporation 25.92-b14)
OS: Windows 7 6.1 x86

参考:

http://gradledoc.qiniudn.com/1.12/userguide/overview.html#sec:special_feature_of_gradle

Gradle笔记系列(一)的更多相关文章

  1. Gradle笔记系列(二)

    1.使用Gradle命令行 在这篇博客中,我们将简要介绍Gradle命令行的使用. 1.1 执行多任务 通过在命令行列出每个任务(task),你可以在一次构建(build)中执行多个任务.例如,命令g ...

  2. Hadoop学习笔记系列文章导航

    一.为何要学习Hadoop? 这是一个信息爆炸的时代.经过数十年的积累,很多企业都聚集了大量的数据.这些数据也是企业的核心财富之一,怎样从累积的数据里寻找价值,变废为宝炼数成金成为当务之急.但数据增长 ...

  3. MongoDB学习笔记系列

    回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...

  4. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  5. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  6. Dynamic CRM 2013学习笔记 系列汇总

    这里列出所有 Dynamic CRM 2013学习笔记 系列文章,方便大家查阅.有任何建议.意见.需要,欢迎大家提交评论一起讨论. 本文原文地址: Dynamic CRM 2013学习笔记 系列汇总 ...

  7. SQLServer学习笔记系列3

    一.写在前面的话 今天又是双休啦!生活依然再继续,当你停下来的时候,或许会突然显得不自在.有时候,看到一种东西,你会发现原来在这个社会上,优秀的人很多,默默 吃苦努力奋斗的人也多!星期五早上按时上班, ...

  8. SQLServer学习笔记系列2

    一.写在前面的话 继上一次SQLServer学习笔记系列1http://www.cnblogs.com/liupeng61624/p/4354983.html以后,继续学习Sqlserver,一步一步 ...

  9. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

随机推荐

  1. 基于mini2440的Tslib的移植

    软件平台: win7系统,虚拟机ubuntu12.04 mini2440开发板 tslib是电阻式触摸屏用于校准的一个软件库,是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波.去抖.校准等功能 ...

  2. Vuejs使用笔记 --- component内部实现

    现在来系统地学习一下Vue(参考vue.js官方文档): Vue.js是一个构建数据驱动的web界面的库,其目标是实现响应的数据绑定和组合的试图组件. Vue.js拥抱数据驱动的视图概念,这意味着我们 ...

  3. ApexSQLLog总结

    我们程序最近做更新,要做新功能的测试.程序经常出现大的事务,每次commit之后如果发现数据不对的问题也不能再回滚进行断点调试了,因为数据库数据已经更改了,所以一直想找一个回滚我数据库所有操作的工具. ...

  4. SQLSERVER 数值 四舍五入取整 向上取整 向下取整

    [四舍五入取整截取] select round(54.56,0) [向下取整截取] SELECT floor(54.56) [向上取整截取]  SELECT   ceiling(13.15)

  5. Android之TextView灵活使用(转载)

    在项目中有无遇到过这样一种程况,例如文字"王明今年10岁了", 但是数字10是从网络返回的数据, 而你又想把这个文字写在xml中, 过往我的做法是分成3个TextView, 实现愚 ...

  6. koa2+koa-views示例

    app.js var Koa = require('koa') var fs = require('fs') var path = require('path') var koaStaticPlus ...

  7. Kafka深入理解-1:Kafka高效的文件存储设计

    文章摘自:美团点评技术团队  Kafka文件存储机制那些事 Kafka是什么 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日 ...

  8. CMD打包文件,解压文件

    压缩%ProgramFiles%\Winrar\rar a c:\123.rar c:\123解压%ProgramFiles%Winrar\unrar.exe x c:\sp\sp.rar c:\sp

  9. ndoutils2.2.0(ndo2db)中文乱码问题解决

    ndoutils插入中文时,产生数据库乱码请用下面两个文件: 适用版本:ndoutils-2.0.0 数据库初始化mysql.sql: 修改ndoutils-2.0.0/src目录中的db.c ndo ...

  10. easyui datagrid 没数据时显示滚动条的解决方法

    今天解决了一个bug,因为datagrid有多列,可是当没有数据的时候,后面的列无法通过滚动条拉动来显示,比较麻烦,而需求要求没有数据也要拉动滚动条查看后面有什么列,一开始在网上找了一些资料,发现都不 ...