Gradle笔记系列(一)
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笔记系列(一)的更多相关文章
- Gradle笔记系列(二)
1.使用Gradle命令行 在这篇博客中,我们将简要介绍Gradle命令行的使用. 1.1 执行多任务 通过在命令行列出每个任务(task),你可以在一次构建(build)中执行多个任务.例如,命令g ...
- Hadoop学习笔记系列文章导航
一.为何要学习Hadoop? 这是一个信息爆炸的时代.经过数十年的积累,很多企业都聚集了大量的数据.这些数据也是企业的核心财富之一,怎样从累积的数据里寻找价值,变废为宝炼数成金成为当务之急.但数据增长 ...
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- C#温故知新:《C#图解教程》读书笔记系列
一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- Dynamic CRM 2013学习笔记 系列汇总
这里列出所有 Dynamic CRM 2013学习笔记 系列文章,方便大家查阅.有任何建议.意见.需要,欢迎大家提交评论一起讨论. 本文原文地址: Dynamic CRM 2013学习笔记 系列汇总 ...
- SQLServer学习笔记系列3
一.写在前面的话 今天又是双休啦!生活依然再继续,当你停下来的时候,或许会突然显得不自在.有时候,看到一种东西,你会发现原来在这个社会上,优秀的人很多,默默 吃苦努力奋斗的人也多!星期五早上按时上班, ...
- SQLServer学习笔记系列2
一.写在前面的话 继上一次SQLServer学习笔记系列1http://www.cnblogs.com/liupeng61624/p/4354983.html以后,继续学习Sqlserver,一步一步 ...
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
随机推荐
- C#调用C++编写的DLL函数, 以及各种类型的参数传递 (转载)
C#调用C++编写的DLL函数, 以及各种类型的参数传递 1. 如果函数只有传入参数,比如: C/C++ Code Copy Code To Clipboard //C++中的输出函数 int ...
- js工厂方式和构造函数
工厂方式 //工厂方式 : 封装函数 function createPerson(name){ //1.原料 var obj = new Object(); //2.加工 obj.name = nam ...
- 使用二分法查找mobile文件中区号归属地
#!/usr/bin/env python #coding:utf-8 ''' Created on 2015年12月8日 @author: DL @Description: 使用二分法查找mobil ...
- CoIDE在STM32系列单片机中的使用实践
这一段时间找到CoIDE,发现其真的挺好用,编辑界面比Keil功能强大.因此把实际操作过程记录下来. CoIDE 是CooCox专业打造的一款免费的ARMCortexMCU嵌入式集成开发环境(Int ...
- Spark Streaming消费Kafka Direct方式数据零丢失实现
使用场景 Spark Streaming实时消费kafka数据的时候,程序停止或者Kafka节点挂掉会导致数据丢失,Spark Streaming也没有设置CheckPoint(据说比较鸡肋,虽然可以 ...
- JavaScript校验图片格式及大小
<!DOCTYPE html> <html> <head> <title>JavaScript校验图片格式及大小</title> <s ...
- mybatis单个插入和批量插入的简单比较
在J2EE项目中,mybatis作为主流持久层框架,许多知识值得我们去钻研学习,今天,记录一下数据插入性能(单个插入和批量插入). 一,测试对象 public class Test { private ...
- HTTP权威协议笔记-5.Web服务器
5.1 Web服务器工作内容 建立连接--接受一个客户端的连接,或者将其拒绝 接受请求--从网络中读取一条HTTP报文 处理请求--对请求报文进行解释,并采取行动 访问资源--访问报文中指定的资源 构 ...
- Django Web补充
一.今日内容 一.Django ORM连表操作 Q,F 二.Form表单验证 面向对象 正则 三.Session框架 面向对象 cookie toanado扩展 二.Django ORM一对多数据创建 ...
- inotifywait命令
[命令格式]: inotifywait [ options ] file1 [ file2 ] [ file3 ] [ ... ][命令原意]: inote file system wait[命令路径 ...