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. spring JdbcTemplate数据库

    DAO package DAO; import org.springframework.jdbc.core.JdbcTemplate; public class OrderDao { private ...

  2. Android利用Mediapalyer播放本地资源文件声音

    首先在res下创建raw,然后将mp3音乐拷贝到raw下 直接贴代码吧 //开始播放声音 public class PlayVoice { private static MediaPlayer med ...

  3. jQuery UI =>jquery-ui.js中sortable方法拖拽对象位置偏移问题

    今天要处理sortable方法处理的对象,拖拽的时候,位置偏移的问题. 按理应该是鼠标在哪,对象就跟着在哪的 百度了一下问题,http://blog.csdn.net/samed/article/de ...

  4. python数据分析及展示(二)

    一.Matplotlib库入门 1. Matplotlib库的介绍 http://matplotlib.org/gallery.html可查看Matplotlib库的效果 Matplotlib库由各种 ...

  5. vs2008 使用百度编辑器

    准备工作 百度编辑器官方下载,并将文件放到项目根目录下. 因为vs2008 只到Framework 3.5,所以需要将4.0的东西去掉. 1)下载.net framework 3.5版的 Newton ...

  6. Material Designer的低版本兼容实现(五)—— ActivityOptionsCompat

    extends:http://www.cnblogs.com/tianzhijiexian/p/4087917.html 本文是对API中的方法做了介绍,如果想要看如何让这些方法兼容4.x或2.x可以 ...

  7. vue---import的几种表现形式

    在使用vue开发项目的时候,很多使用会import很多模块,或者组件,下面说下import的几种表现形式: 例如:我在 src / api / table.js import request from ...

  8. mock---前端搭建模拟服务

    在做前端开发接口的时候,往往接口都是从后端来的,这让前端很苦恼,但是有了 MockServer ,前端也可以搭建API服务了. server-mock是什么? 是一款nodejs的应用,用于搭建web ...

  9. cf 1132 F

    区间dp.. 每次删一串相邻的一样的,问多少次删光. 感觉想的几乎是一样的怎么比赛时就过不了呢...一定是因为我挂机睡觉了 考虑l和r相等,l和l+1相等,r和r-1相等这三种情况就行了..然后就是裸 ...

  10. 最小生成树 prime+heap

    改一个错误真不容易,刚开始没有加上used数组,没有判断每个顶点是否已经加入到数组当中,结果同一个顶点被pop不止一次. struct edge{int to,cost;}; typedef pair ...