Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。

1、可表达性的构建语言

  在Gradle脚本中每一个元素都有一个与Java类一对一的映射。在许多情况下Groovy化的类相对于Java,代码更加简洁,并且允许使用如闭包这样的新语言特性。

2、Gradle就是Groovy

  Ant和maven这样杰出的构建工具使用XML来定义他们的构建逻辑。XML很容易读和写,但是如果内容太多就不容易维护了。XML并不具备很强的表达性,这使得它很难定义复杂的定制逻辑。Gradle采用一种不同的方式,是一种具有可读性和表达性的构建语言。能够用编程语言来表达你需要的构建是Gradle的一大亮点。

3、灵活的约定

  Gradle针对你的项目给予指导和有意义的默认值。Gradle中的每个Java项目都确切的知道源代码和测试类文件的位置。但改变默认值也非常的简单,通过约定属性即可改变。Gradle的约定和maven提供的约定相似,但不会让你感觉到被限制。maven非常武断,它建议一个工程包含一个Java源代码目录且只产生一个jar文件。Gradle允许你轻松的打破约定。ant不会给你任何关于如何组织构建脚本方面的指导,以确保最大程度的灵活性。Gradle则折中选择和,即提供约定,又给予你改变约定的能力。Gradle是不武断工具上的一个武断的框架。

4、鲁棒和强大的依赖管理

  项目会依赖第三方组件,你编译好的组件也可能会被其他团队所依赖。外部依赖通过仓库获得,而仓库的类型各种各样,从纯文件系统到成熟的企业仓库。外部依赖还可能存在对其他类库或资源的引用——传递性依赖。Gradle提供了一个基础设施去管理解析、获取和存储依赖的复杂性。一旦他们被下载并存储到本地缓存中,你的项目就可以使用了。

5、可扩展的构建

  Gradle支持通过指定任务的输入和输出进行增量型构建。它准确的找出哪些任务需要跳过,哪些需要构建或者部分构建。Gradle会负责重新构建需要的部分。
  自动化测试、集成测试和功能测试是构建过程的一部分。将需要短时间运行的测试和那些需要准备资源和外部依赖的测试分离是有意义的。Gradle支持测试的并行执行。

6、轻松的可扩展性

  大部分企业构建都不一样,它们也不会解决相同的问题。一旦完成了建立基本构建脚本的初始化阶段,你就会开始实现定制逻辑。Gradle提供一种可以在类定义中写定制化逻辑的方法,这样可以让维护和编写代码更简单。如果你想要在多个构建或者项目中分享可重用代码,Gradle提供插件这种扩展机制。而且写一个插件也非常的简单。

7、和其他构建工具的集成

  Gradle与Ant、Maven、Ivy可以做很好的集成。对于Ant,Gradle允许你导入现有的构建逻辑并重用标准的Ant任务。Gradle与maven和Ivy仓库100%兼容。你可以从中获取依赖,也可以发布工件。对于已有的maven构建,Gradle提供了一个转换器可以将构建逻辑转换为Gradle的构建脚本。

8、社区和公司的推动

  除了Gradle中标准的插件,Gradle社区几乎每天都会发布新的功能(可重用的插件)。Gradleware是Gradle背后的技术服务和支持公司。它不仅提供了关于Gradle的专业建议,它的目标更是指向了更大范围的企业级别的自动化咨询。

总结

  总结起来,Gradle是一个为企业准备的构建系统,由具有声明式和表达性的Groovy的DSL支持。它结合了灵活性和基于约定优于配置思想的扩展性,以及对传统依赖管理的支持。它背后有一个专业的服务公司(Gradleware)和强大的社区参与,Gradle成为了许多开源项目和企业构建方案的第一选择。

Gradle引人注目的特性集的更多相关文章

  1. Android Gradle 配置选项合集

    //让gradle 引入构建安卓app的插件 apply plugin: 'com.android.application' //自定义变量, 使用的时候不需要 ext 前缀 ext { minSdk ...

  2. JAVA8新特性--集合流操作Stream

    原文链接:https://blog.csdn.net/bluuusea/article/details/79967039 Stream类全路径为:java.util.stream.Stream 对St ...

  3. docker mesos集群资源调度平台

    mesos原理与架构 首先,再次需要强调 Mesos 自身只是一个资源调度框架,并非一整套完整的应用管理平台,所以只有 Mesos 自己是不能干活的.但是基于 Mesos,可以比较容易地为各种应用管理 ...

  4. [C#] 剖析 AssemblyInfo.cs - 了解常用的特性 Attribute

    剖析 AssemblyInfo.cs - 了解常用的特性 Attribute [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5944391.html 序 ...

  5. 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  6. (转)C++0x语言新特性一览

    转自:http://blog.csdn.net/zwvista/article/details/2429781 原文请见http://en.wikipedia.org/wiki/C%2B%2B0x. ...

  7. Gradle命令行黑魔法

    毫无疑问,现在Gradle已经成为java世界最火的构建工具,风头已经盖过了冗余的ant,落后的maven.Gradle是以Groovy语言编写的一套构建脚本的DSL,由于Groovy语法的优雅,所以 ...

  8. 分布式缓存技术redis学习(四)——redis高级应用(集群搭建、集群分区原理、集群操作)

    本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...

  9. C++0x新特性

    我是在一个帖子上摘抄的大神语录...感谢supermegaboy大神,给了详尽的解释 下文是一篇转载的Wikipedia的译文,从语言和库双方面概述了C++0x. 右值引用与转移语义 在标准C++语言 ...

随机推荐

  1. struts表单域模型注入

    表单使用struts标签,表单中每一个字段都可以这样来赋值 类(action).成员变量 这个叫域模型注入 <s:form action="orders" method=&q ...

  2. 解决使用微软模拟器VS Emulator for Android在VS2017 Xamarin开发中不能调试程序的问题。

    在使用VS2017 XAMARIN调试Android应用程序时,屏幕闪一下,进入不了调试(使用谷歌的模拟器可以调试,但是太慢), 我们现在来解决一下这个问题. 第一步:打开Hyper-V管理器 第二步 ...

  3. Flutter & Dart 安装在window系统

    一.系统环境 flutter最低要求 1,windows7 SP1 64位版本以上,我的系统就是windows 7 sp1 64bit 2,git for windows ,没有安装的需要到这里下载  ...

  4. 【译】Apache Kafka支持单集群20万分区

    之前网上关于确定Kafka分区数的博客多多少少都源自于饶军大神的文章,如今他带来了这方面的第二篇文章,特此翻译一下,记录一下其中的要点. 原贴地址: https://www.confluent.io/ ...

  5. 关于mysql中触发器old和new

    1.当使用insert语句的时候,如果原表中没有数据的话,那么对于插入数据后表来说新插入的那条数据就是new,如图所示: 2.当使用delete语句的时候,删除的那一条数据相对于删除数据后表的数据来说 ...

  6. 半夜两点灵光一现想出来的一个demo

    功能: 1.用户通过页面下载Excel模板,按照模板填写数据,上传Excel , 服务器解析 ,绘制成折线图.柱状图.雷达图 ....... 2.用户在线编辑数据,绘图 (没想好咋弄) 可定制需求,根 ...

  7. 剑指offer——python【第44题】翻转单词顺序

    题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“student ...

  8. 补充:MySQL修改表

  9. 概率DP求解例题

    1,逆推状态:山东省赛2013年I题 Problem I: The number of steps Description Mary stands in a strange maze, the maz ...

  10. Saltstack如何修改主机名或者minion id

    参考:http://www.mamicode.com/info-detail-2241784.html 在生产维护的过程中,由于某种需要,可能需要给一些服务器改名,比如根据服务器的用途重新进行定义主机 ...