gradle构建工具
在使用android studio开发android程序时,as就是基于gradle进行构建的,我们只需要通过run就可以编译、打包、安装,非常方便,但是究竟gradle是什么呢?
一、java构建工具
首先,我们得知道什么是构建工具。实际上,构建工具是一个可编程的工具,它可以帮助我们执行有序的任务,实现工程的自动化,而减少甚至避免不必要的手动操作,即构建工具是一个工具,它就是解放生产力,提高效率的。 在前端中,webpack就是一个构建工具,它不仅仅可以打包,还可以完成测试、热更新、部署、检查、优化等一些列的任务,从而实现了开发的工程化,提高了效率。
在java中,下面几种构建工具也都是常用的:
- Ant - Ant的核心是由Java来编写的,采用xml作为构建脚本,它基于任务链思想,任务之间定义依赖,形成先后顺序,然后去逐一完成。但是,XML来定义构建脚本,会使得脚本非常臃肿,因为XML太大了,除非是很小的项目,大的项目让我们很难去维护。就像前后端数据传输原来使用xml,而如今使用的时json一样,都是由于xml的缺点太过明显。
- Maven - Maven是常常用到的,包括现在,很多java工程师也在广泛使用。Maven构建工具的开发团队就是意识到了Ant的缺陷,采用了标准的项目布局和统一的生命周期,采用约定配置的思想,减少构建脚本需要的编写内容,其社区活跃,可以方便找到合适的插件,是一个非常强大的依赖管理工具。但是Maven使用的也是xml,并且使用默认的结构和生命周期太限制,编写插件扩展也麻烦。
- Gradle - 它结合了前两者的优点,具有ant的强大和灵活,也有Maven的生命周期管理且易于使用。另外,Gradle没有使用xml而是用基于Groovy的DSL,所以Gradle构建脚本比Ant和Maven更简洁清晰并且其代码很少,因为DSL被设计用于解决特定额问题,贯穿软件的生命周期,从编译到静态检查到测试到打包和部署。
二、Gradle
之前介绍到Gradle是基于ant和maven的更为方便使用的构建工具,并且提到了它是基于groovy的,而DSL是什么呢?
DSL即Domain Specific Language(领域专用语言),它的基本思想就是“求专不求全”,即DSL就是用于构架工具的,而不是为了进行数值计算等,它的目的很单一,仅仅是专门针对某一特定问题的计算机语言。
Groovy和java的语法很像,但它是一种动态语言,和java一样,运行在java虚拟机中,所以我们可以认为是Groovy扩展了java语言,下面就是java、Groovy和jre的关系:

实际上,Groovy Code在真正执行的时候,其实已经变成了java字节码,所以JVM根本不知道自己运行的是Groovy代码。
三、Gradle工作流程
下图可以用来阐述Gradle的工作流程:

即Gradle工作包含了三个阶段:
- 初始化阶段(Initialization phase)。对于通过as创建的项目来说,就是执行了settings.gradle。
- 初始化阶段的下一阶段就是配置阶段(Configuration phase)。 它的目标是解析每个project中的build.gradle。
- 最后一个阶段就是执行阶段(Exection phase)。
注意每个阶段之后我们都可以有hook去执行自定义函数。
参考文章:https://blog.csdn.net/Innost/article/details/48228651
gradle构建工具的更多相关文章
- AS Gradle构建工具与Android plugin插件【大全】
Android plugin version 与 gradle version 的关系 Gradle是一种构建工具,它通过编写一个名为build.gradle的脚本文件对项目进行设置,再根据这个脚本对 ...
- Android Gradle 构建工具(Android Gradle Build Tools)是什么?
转载地址:http://mrfu.me/android/2015/07/17/New_Android_Gradle_Build_Tools/ 译者地址:[翻]一览新的 Android Gradle 构 ...
- Android NDK开发 Android Studio使用新的Gradle构建工具配置NDK环境(一)
本文主要讲述了如何如何在Android Studio使用新的Gradle构建工具配置NDK环境,现在把相关的步骤整理出来分享给Android程序员兄弟们,希望给他们在配置NDK环境时带来帮助. 从An ...
- 一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5
译者地址:[翻]一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5 原文:First Look at New Android Gradle Build To ...
- gradle 构建工具,与Ant Maven关系
1 基本概念 gradle是一个基于Apache ant 和apache maven概念的项目自动化建构工具.它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的xml.当前其支持 ...
- [Gradle] Gradle 构建工具的未来
转载地址:http://www.infoq.com/cn/news/2011/04/xxb-maven-6-gradle Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你 ...
- Gradle 构建工具
参考文章: 作者:ghui 链接:https://www.zhihu.com/question/30432152/answer/48239946 来源:知乎 著作权归作者所有.商业转载请联系作者获得授 ...
- 大神所写的深度好文---Gradle 构建工具
什么是构建工具? 我们大家都知道 Gradle 是一种构建工具,那么什么是构建工具呢? 网上一大堆的文字解释我觉得很难理解,这里我以咱们 Android 开发来举个例子吧. 我们以前开发都是用 Ecl ...
- Gradle构建工具从入门到精通(IDEA)
1.Gradle安装 官网下载压缩包,然后解压,配置本地环境变量.主要有下面两个: GRADLE_HOME 是解压后的目录, GRADLE_USER_HOME 的作用是让其他程序检测到本地.gradl ...
随机推荐
- i2c_client 几种实例化方法
http://blog.csdn.net/lugandong/article/details/48092397
- VS2008卡死无反映解决
终于解决了我的vs卡死的问题.最初只发现打开aspx页面会卡死,打开cs文件不会.并且每次卡死都会发现进程中有启动“setup.exe”,这是office的修复程序.这样就很好理解了,vs中的设计视图 ...
- springMVC注解(一)Controller
HelloWorld程序 Step1 编写web.xml文件 <?xml version="1.0" encoding="UTF-8"?> < ...
- 深入浅出javascript(八)this、call和apply
_________此篇日志属于重要记录,长期更新__________ this,call,apply这三个是进阶JS的重要一步,需要详细的记录. ➢ this 一.作为对象的方法调用. 当函数作为对象 ...
- _ZNote_Qt_对话框_模态非模态
QDialog(及其子类,以及所有Qt::Dialog类型的类)的对于其 parent 指针都有额外的解释:如果 parent 为 NULL,则该对话框会作为一个顶层窗口,否则则作为其父组件的子对话框 ...
- io类型
非阻塞io from socket import * import time s=socket(AF_INET,SOCK_STREAM) s.bind(('127.0.0.1',8080)) s.li ...
- java数据库编程(未整理完,待续)
java使用数据库可以借助jdbc这个中间媒介.本文将介绍如何使用jdbc连接数据库,数据库的基本操作和jdbc的事物处理. 1 连接数据库 一般java连接数据库,都有几个步骤: 0.导入相应的驱动 ...
- C++ const方法及对象
一.整体代码 01.cpp #include <iostream> using namespace std; class Test { public: Test(int x) : x_(x ...
- TryEnterCriticalSection___Delphi
VOID EnterCriticalSection:非阻塞函数.将当前线程对指定临界区的引用计数减1:在使用计数变为零时,另一等待此临界区的一个线程将被唤醒. BOOL TryEnterCritica ...
- Android-WebView与本地HTML (互调)
此篇博客是基于,上两篇博客,Android-WebView与本地HTML (HTML调用-->Java的方法) , Android-WebView与本地HTML (Java调用--->HT ...