Gradle学习(一)——简介

原创 2017年12月19日 17:43:27

转载请注明出处:http://blog.csdn.net/lastsweetop/article/details/78845373

基础

依赖管理是基于apache Ivy的,任务和构建是基于ant的,脚本是用groovy的,如果你之前已经非常了解这三样的话,那么你已经学会了30%

优点

比之前的构建系统更优的有几点:
1. 更为强大的多项目支持
2. 完美兼容maven项目和lvy项目
3. 不需要远程的pom.xml和ivy.xml就可以进行依赖管理的推导传递
4. 最重要的就是有一套堪称完美的用于构建的领域模型

特性

声明式构建和惯例式构建

Gradle的核心是基于Groovy的可扩展的DSL,Gradle通过提供的声明式语言元素使得声明式构建更加灵活,你可以按照你的喜好随意组合,这些元素可以支持Java, Groovy, OSGi, Web和Scala等项目惯例式构建。这种声明式的语言还是可以扩展的,你可以为别的编程语言增加声明式语言的元素,也可以在现有的编程语言上去扩展他的声明式语言元素,使得构建是简洁的,可维护的,易理解的。

可编程的DSL

Gradle有一套通用任务图,用这些就完全足够你构建你的项目了,除此之外还提供了极大的灵活性,可以满足你独特的需求。

结构化你的构建

Gradle的丰富性和灵活性可以让你将通用的设计原则用于你的构建。例如构建逻辑的可重用部分可以很容易的应用在你的构建之中。不要把在一起的部分强制拆解。不要把模块做的太分散或者有歧义,那样维护起来就是噩梦。还是那句话,简洁,可维护,易理解是构建三大标准。

非常底层的api

构建执行的整个周期都可以愉快的嵌入各种钩子,gradle允许你在非常核心的地方对它的配置和运行进行监听和定制。

Gradle的伸缩性

Gradle的伸缩性非常好,不管是单一的简单项目的构建还是庞大的企业级的多项目构建,Gradle都可以显著的提高生产力,对结构化的构建的确如此。借助于它先进的增量构建功能,他也可以解决庞大工程构建的性能问题。

多项目构建

Gradle对多项目的支持也是非常显著的,在Gradle中项目之间的依赖是一等公民。为项目的依赖关系建模确实是用户自己的职权范围,Gradle会遵循你的布局,反之则不成立。
Gradle也提供局部构建。如果你只构建一个单独的子项目,那么gradle只会关心这个子项目及其所依赖的所有子项目。你可以构建一个特定子项目的子项目。对于庞大的项目来说,增量构建可以节省很多时间。

依赖管理的多种方式

不同团队对管理外部依赖包都有各自的喜好。Gradle对各自策略都进行了很好的支持,不管是用远程的Maven或者Ivy仓库进行传递依赖关系还是本地系统jar文件都进行了支持。

Gradle对其他架构的支持

Ant是Gradle的一等公民,Ant项目也是一等公民。Gradle支持任何ant项目的运行时导入,可以在运行时把Ant的任务转换为Gradle原生的任务。你能从Gradle中依赖它们,也能从Gradle中增强它们,你甚至可以在build.xml依赖Gradle的任务,对properties,paths等当然也一样的支持。
Gradle也支持Maven和Ivy远程仓库的发布和检索,Gradle可以把Maven的pom.xml直接转为Gradle脚本,Gradle对Maven项目的运行时导入也是很快的事情了

易于迁移

Gradle可以适应各种结构,你可以在你的开发环境的同一分支上引入Gradle进行构建,但最好多写点测试用例以保证迁移的可靠性。循序渐进才是重构的最佳实践

Groovy

Gradle的构建脚本是Groovy写的,而不是XML。不要想着是简单的暴露动态语言的原生脚本力量,那样会让构建的维护非常困难。Gradle的设计目的就是想让用户像语言一样使用,而不是一个死板的框架。Groovy更像是粘合剂,允许你用Gradle或者你自己提供的抽象来讲你的个性化故事。Gradle提供了一些标志的故事,但是它们没什么特权,和你的故事没什么区别。这是Gradle和其他声明式系统一个最主要的区别。对groovy的支持可不仅仅是个糖衣。整个Gradle的API都是基于Groovy的。添加Groovy是个愉快并高效的体验

Gradle wrapper

Gradle wrapper允许你在没有安装Gradle的机器上执行构建,这对于持续发布来说是非常有用的,对于一些开源项目屏蔽构建的最低要求来说也是非常有用的,wrapper对于企业来说也是非常重要的,客户端机可以0管理,而且强制了Gradle的版本,可以让出错率更低。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android Gradle Plugin指南(一)——简介 - 琴弦第七的专栏 - 博客频道 - CSDN.NET

原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Introduction 译者:goo...
  • OyangYujun
  • OyangYujun
  • 2015年07月26日 19:57
  • 6256

Gradle入门(一)Gradle简介

Gradle简介 Java的构建,经历了从Ant-->Maven->Gradle的过程,每一次的进步,都是为了解决之前的工具带来的问题: Ant:Ant的功能虽然强大,但过于灵活,规范性不足,对目...
  • akria1990
  • akria1990
  • 2017年03月13日 22:00
  • 208

pandas学习笔记(1)--pandas简介

Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高...
  • lwplwf
  • lwplwf
  • 2017年02月20日 16:31
  • 1650

Gradle学习总结——抓重点学Gradle

前言网上关于Gradle的教程很多,但很多都是以“面”切入— 通过大量讲解其用法及其API分类来阐述。但Gradle API使用技巧众多,API更是成千上百,臣妾记不住呀。个人深信,技术之道与练功之道...
  • u012562943
  • u012562943
  • 2016年09月09日 10:32
  • 2924

OpenGL学习(一) OpenGL简介

OpenGL简介 OpenGL主要特点和功能 OpenGL的工作流程 OpenGL开发库的基本组成 一个简单的OpengGL程序 OpenGL函数的语法 OpenGL是一个状态机 OpenGL渲染管线...
  • u011251225
  • u011251225
  • 2016年03月23日 21:32
  • 546

关于Gradle的一些好的学习资源

看了Gradle一周左右,看了很多资料,把个人感觉不错的资料总结一下。 Gradle User Guide英文版:(适合细读,查找资料用) 官方的英文版资料。内容和本篇中提到的中文版内容差的还是很...
  • hotdust
  • hotdust
  • 2016年05月02日 22:40
  • 837

给 Android 初学者的 Gradle 知识普及

1 前言 前一段时间有人在我的邪教群里问「刚学 Android 不久,对 Gradle 不懂,看了很多资料依然一知半解,希望张哥给讲讲 Gradle 」,没想到群里很多人都...
  • zl570932980
  • zl570932980
  • 2016年07月02日 15:12
  • 1977

AndroidStudio开发Gradle学习

转自:http://blog.csdn.net/innost/article/details/48228651 Gradle的官网:http://gradle.org/ 文档位置:ht...
  • qie7892683
  • qie7892683
  • 2016年05月14日 21:40
  • 1308

《gradle教程系列》一.gradle简介

0. 背景过去 Java 开发者常用 Maven 和 Ant 等工具进行封装布署的自动化,或是两者兼用,不过这两个包彼此有优缺点,如果频繁改变相依包版本,使用 Ant 相当麻烦,如果琐碎工作很多,Ma...
  • u014453515
  • u014453515
  • 2016年10月20日 19:44
  • 203

大数据学习篇:hadoop深入浅出系列之HDFS(一)——HDFS简介和优缺点

上一篇,我们说了hadoop的伪分布式安装,今天我们来说说著名的HDFS HDFS,顾名思义 Hadoop Distributed File System,至于它的来历我就不说了,网上比比皆是。 随...
  • stronglyh
  • stronglyh
  • 2015年09月20日 23:24
  • 1380
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Gradle学习(一)——简介
举报原因:
原因补充:

(最多只允许输入30个字)