2.1 特性

本章将介绍一系列Gradle的特性。

申明式构建和基于约定的构建

Gradle的核心是基于Groovy呈现了一种丰富的针对特定领域的语言,称之为Domain Specific Language(DSL)。通过自由的申明式语言元素,Gradle将申明式构建推向了一个新的高度。这些元素也提供了基于约定构建的功能,用于支持Java,Groovy,OSGI,Web和Scala项目。而且,这种申明式语言是可以扩展的。你可以增加一些新的元素,或者对已有的元素进行增强,以此实现简明的,易于维护和可读性高的构建。

基于依赖的编程语言

因为声明式语言位于任务图顶端,所以你可以完全放心的将Grale加入到你的构建。它提供了足够的灵活性以应对各式各样的项目。

构建结构化

因为Gradle具有强大的功能以及容易使用的特点,你可以随意在你的构建中添加通用的设计法则。例如:通过可复用的构建逻辑轻松构建。不应当存在不必要的内联关系。不要强行分离已经在一起的部分(例如:项目层级关系)。避免分散的变化,那样会让项目变得难以维护。总之,你可以创建一个结构合理,易于维护,容易理解的构建。

底层API

在运行构建的生命周期里有,Gradle提供了很多内嵌的钩子,这让你可以从它的核心来监控和自定义它的配置和执行逻辑。这是非常让人愉悦的一个特性。

Gradle Scales

Gradle Scales真的非常棒,从简单的单一Project架构到大型的企业级多Project架构,它都能从容应付,带来显著的效率提升。

多项目构建

Gradle的多项目构建功能是十分杰出的。项目依赖十分重要。Gradle允许用户在一个多项目构建中去塑造它们之间的依赖关系。Gradle遵循用户的意图,而不是让用户反过来按照Gradle的要求去完成构建。

Gradle也可以完成局部构建,如果你试图构建一个子项目,Gradle会将此子项目依赖的子项目都进行构建。你也可以选择重新构建子项目所依赖的其他子项目。这样可以在一些大项目里节省很多时间。

多种方法管理依赖

不同的团队有不同的依赖管理方法。Gradle提供了方便的方式以支持各种策略。不论是从Maven仓库或Ivy仓库的依赖传递管理,还是本地系统的文件夹或Jar包依赖,Gradle都能从容应付。

Gradle是第一个集成构建工具

Ant任务优先被支持。更重要的是Ant项目也被很好的支持。Gradle提供底层的导入以支持Ant项目,在运行的时候,Ant 的任务将转换为native的Gradle任务。你可以通过Gradle依赖或者增强它们,甚至可以在你的build.xml里声明它们的依赖关系。同样的,也可以继承properties,paths等等。

Gradle完全支持已有的Maven或者Ivy仓库来构建实现发布和检索依赖,Gradle也提供了一个将Maven的pom.xml转换为Gradle脚本的转换器。在运行时导入Maven项目也很快会被引入。

便于迁移

Gradle能适配各种结构。因此你总是可以并行的去构建你项目中的不同分支。通常我们建议编写一些测试来确保这些分支是相同的。通过这种方法可以让迁移变得更加可靠。这是使用依葫芦画瓢的方式来获取的最佳重构实践。

Groovy

Gradle构建脚本是通过Groovy编写,而不是通过XML。和其他方式不同的是这并不仅仅只是生硬的展示动态语言的强大能力。那样的话会让构建维护变得十分困难。Gradle的整体设计是为了让Gradle成为一种被广泛使用的语言,而不仅仅只是一个僵硬的框架。Groovy是连接Gradle和你的项目的纽带。Gradle提供了一些标准的应用场景,然而这些场景并没有设么特殊的地方。Gradle的Groovy支持不仅仅只是一个噱头。Gradle的API看上去和Groovy非常的相似,这是一种非常愉快和可靠的体验。

Gradle Wrapper

Gradle wrapper使得你可以在没有安装Gradle的环境执行Gradle构建。在一些连续集成的服务器上,这显得十分有用。同样的,Gradle wrapper也使得一些开源项目变得容易构建。Gradle wrapper对企业来说也很有吸引力,因为对于终端机器并不需要任何的管理方式,并且可以指定适用特定的Gradle版本来避免一些可能产生的问题。

免费并且开源

Gradle是一个基于ASL协议的开源项目。

2.2 为什么是Groovy?

我们认为当运行构建脚本时,一个在XML之上的内部DSL(基于动态语言)的优势是显而易见的。目前有很多种这样的语言,为什么是Grooby呢?原因在于Gradle是应用环境。虽然Gradle的核心目标是作为一个构建工具,但是它的主要应用场景却是在Java项目里,这些项目里的成员都非常熟悉Java。我们认为一个构建最好对于它的所有应用者都应该是容易学习和熟悉的,所以选择了Groovy。

基于上述原因,你可能会问为什么不直接使用Java作为构建脚本的语言。我们认为这是一个很好的问题。如果直接使用Java作为构建脚本的语言,可能对于你的团队来说是最容易接受,学习成本最低的方案,但是因为Java语言自身的局限性,将Java作为构建语言并不是很好的方案(在这里你可以找到答案,这里很好的比较了Ant,XML,Java和Lisp),像Python,Groovy或者Ruby都会比java更适合完成构建工作。我们选择Groovy就是为了为Java开发者提供最低的学习曲线,它的基本语法,符号,包结构等都非常接近于Java,Groovy不仅与java有着共同的基础,而且还提供了更多的特性。

对于那些同时具有Python或Ruby的Java开发者,以上解释也许不能接受。Gradle非常适合使用JRuby或者Jython来创建一个新的构建脚本引擎,不过这并不是我们目前的最高优先级任务。我们非常乐意支持任何社会团体和个人来实现一个额外构建引擎。

http://www.cnblogs.com/wisekingokok/p/5113954.html

转载于:https://www.cnblogs.com/softidea/p/5115321.html

Gradle 2.0用户手册——总览(译)(转)相关推荐

  1. No cached version of com.android.tools.build:gradle:2.0.0 available for offline mode.

    异常场景 从AS2.0升级到2.1,重新编译工程后,抛出了如下异常 Error:A problem occurred configuring root project 'AndroidStudioPr ...

  2. android 3.0单元测试,Android Studio 3.0 gradle 3.0.0-beta2打破了Kotlin单元测试覆盖率?

    我有一个简单的Kotlin课程,如下所示 class MyClass { fun justSayHello(yes: Boolean): String { if (yes) { return &quo ...

  3. 史上最快、最强大的Gradle 5.0发布,新特性全解

    Gradle 5.0是有史以来速度最快.最安全.最强大的Gradle版本,这是Gradle官方给出的评价,v5.0 新增的功能主要包括: 在构建缓存和更新检查功能的基础之上,Gradle 5.0又改进 ...

  4. 因财务造假,贾跃亭被罚 2.41 亿元;华为徐直军重申不造成:但将推子品牌汽车;Gradle 7.0 发布|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  5. Android Studio Arctic Fox | 2020.3.1、Gradle 7.0升级记录

    环境 Android Studio Arctic Fox | 2020.3.1 Gradle.AGP 7.0 Kotlin 1.5.31 问题1 Value '/Applications/Androi ...

  6. Gradle 2.0 用户指南翻译——第五十一章. 发布工件

    本文禁止w3cschool转载! 翻译项目请关注Github上的地址:https://github.com/msdx/gradledoc . 本文翻译所在分支:https://github.com/m ...

  7. OSpider v3.0.0 用户手册

    OSpider v3.0.0 用户手册 软件原型: 1软件说明 1.1总述 OSpider是GPL v3.0协议下的开源桌面软件及python库,致力于提供便捷的矢量地理数据获取和预处理体验.可在项目 ...

  8. AndroidStudio gradle 7.0+配置说明

    文章目录 AndroidStudio gradle7.+配置 构建流程 Gradle配置文件 设置配置 顶层build配置 模块build配置 Gradle 属性文件 源代码集 更改代码路径配置 依赖 ...

  9. 原美团联合创始人欲打造中国版 OpenAI ;ChatGPT 爆红惊动谷歌退隐创始人布林;Gradle 8.0 发布|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

最新文章

  1. 架构演进之「微服务架构」
  2. (转)Spring AOP的底层实现技术
  3. vue cli 项目在打包时候报错 API fatal error handler returned after process out of memory
  4. 一款b站视频下载工具软件mac版
  5. python绘制折线图怎么样填充空白颜色_Python:填补两幅图之间的空白
  6. oracle 赋予dorp,oracle表空间(tablespace)的增删改查(create/drop/rename,move/select)
  7. Ruby数据结构-数组和哈希表
  8. 下载频道用户使用指南!!
  9. 在手机上共享屏幕,更专业的远程协助软件
  10. 图灵机器人官网 java_图灵机器人-Java/Android
  11. edge播放视频HTML5黑屏,edge不能播放网页视频怎么办-修复edge浏览器播放视频黑屏的方法 - 河东软件园...
  12. 解决问题win10无线网卡:无法连接到此网络
  13. 给定字符串 s 和 t ,判断 s 是否为 t 的子序列
  14. 利用Chrome在PC电脑上模拟微信内置浏览器
  15. 《超智游戏》:鬼影投手·棒球1号位
  16. 电脑播放视频报错----------无法播放。请确保你的计算机的声卡和视频卡可以使用,并安装了最新的驱动程序----------解决!
  17. 2013年08月威海之旅
  18. 互联网其它岗位薪资排行榜
  19. 【hadoop】hadoop3.2.0应用环境搭建与使用指南
  20. 止步89岁!宣布证明黎曼猜想后,数学大师阿蒂亚爵士突然逝世...

热门文章

  1. python入门练习题-python入门练习题2
  2. LeetCode Best Time to Buy and Sell Stock with Cooldown(动态规划)
  3. Nginx源码分析:核心模块剖析及常见问题
  4. AlertDialog的使用(一)
  5. 第七天总结:字符编码
  6. [APIO2018] Duathlon 铁人两项 圆方树,DP
  7. [知识复习] 结构体以及结构体指针
  8. 20180316 代码错题(1)
  9. Play-With-Docker在chrome上的插件
  10. iOS正则表达式验证