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. name转json

    ^(\{)?(?<=\n)(.*)(\})?$ "$2":"", UserId UserOrderId ChargeAccount BuyNum Good ...

  2. GraphX学习笔记——Programming Guide

    学习的资料是官网的Programming Guide https://spark.apache.org/docs/latest/graphx-programming-guide.html 首先是Gra ...

  3. DeBug Python代码全靠print函数?换用这个一天2K+Star的工具吧,改进版

    pysnooper是代码debug神器,比无限low print好很多和也比日志debug好一些,比断点调试也好一些,这个很犀利的装饰器. https://www.toutiao.com/a66829 ...

  4. <转>从K近邻算法、距离度量谈到KD树、SIFT+BBF算法

    转自 http://blog.csdn.net/likika2012/article/details/39619687 前两日,在微博上说:“到今天为止,我至少亏欠了3篇文章待写:1.KD树:2.神经 ...

  5. Spring Security http标签的use-expressions="true"属性

    如果声明为true,那么在access属性要用hasRole()这样写: <intercept-url pattern="/secure/extreme/**" access ...

  6. 使用nginx运行thinkphp的nginx配置

    location / { index index.php; #如果文件不存在则尝试TP解析 if (!-e $request_filename) { rewrite ^(.*)$ /index.php ...

  7. JavaScript基础知识(DOM)

    获取元素的方法 要操作谁,就要先获取谁: 获取元素 1.document.getElementById:通过ID名来获取元素 兼容性: 在IE8以下,会默认把name属性当做id来获取: docume ...

  8. 主席树 || 可持久化线段树 || LCA || BZOJ 2588: Spoj 10628. Count on a tree || Luogu P2633 Count on a tree

    题面: Count on a tree 题解: 主席树维护每个节点到根节点的权值出现次数,大体和主席树典型做法差不多,对于询问(X,Y),答案要计算ans(X)+ans(Y)-ans(LCA(X,Y) ...

  9. 线段树 || BZOJ1756: Vijos1083 小白逛公园 || P4513 小白逛公园

    题面:小白逛公园 题解: 对于线段树的每个节点除了普通线段树该维护的东西以外,额外维护lsum(与左端点相连的最大连续区间和).rsum(同理)和sum……就行了 代码: #include<cs ...

  10. ASP.NET MVC中使用FluentValidation验证实体(转载)

    1.FluentValidation介绍 FluentValidation是与ASP.NET DataAnnotataion Attribute验证实体不同的数据验证组件,提供了将实体与验证分离开来的 ...