3. Gradle源代码编译以及源代码分析

一. Gradle简介

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。---来源于百度

对于自己而言,作为一个Android程序员,我自己使用就是用它来编译android程序,以前用ant,现在用gradle。

但是个人觉得在android studio gradle属性又多又乱,不知道总共有哪些属性;同时对于框架,自己也不喜欢黑盒使用它,总觉得心里没底,所以想把Gradle的源代码研究一遍。

二. Gradle和Groovy关系

Groovy是一种类似Java的编程语言,语法就像在Java里面糅合了很多脚本语言的特性,比如def定义变量

def val
val = "abc"
val = 1

类似的写法,还有Gpath以及闭包等等,大家最好去下面的网站看看Groovy语法,然后对着敲敲。这对自己理解Gradle配置有一定的好处。

那Gradle就是利用Groovy和Java语言编写的一款自动化构建工具。

Groovy官方教程,语法教程

Groovy github源代码

三. Gradle源代码编译

  1. 下载Gradle源代码

Gradle源代码下载

下载的时候,选择src即可;本来自己下载了all,但是后面发现不对。编译的话需要下载src。

就像这样的:

 gradle-4.0-milestone-2-src.zip 17-May-2017 14:05 +0000 21.28M
 gradle-4.0-milestone-2-bin.zip 17-May-2017 14:05 +0000 64.28M
 gradle-4.0-milestone-2-all.zip 17-May-2017 14:05 +0000 85.43M
 gradle-4.0-milestone-1-src.zip 28-Apr-2017 07:04 +0000 20.70M
 gradle-4.0-milestone-1-bin.zip 28-Apr-2017 07:04 +0000 64.11M
 gradle-4.0-milestone-1-all.zip

2. 解压...

你会发现一个这样的目录结构:

其中gradlew.bat是windows环境下Gradle源代码自身编译的脚本,gradlew应该是linux下面的,我没有去测试。

注意!这个不是gradle!! gradle.bat是Gradle去编译其他项目的脚本。

所以,我们最开始的时候,是没有Gradle环境的,需要编译编译一个Gradle环境出来,所以这里我们只有gradlew.bat

3. 编译

打开一个命令行,把gradle.bat拖进去,后面接着输入assemble

也就是:

e:\work_space\gradle-source-from-csdn\gradle-3.1>E:\work_space\gradle-source-fro

m-csdn\gradle-3.1\gradlew.bat assemble

按道理来说,直接双击运行gradlew.bat也是可以的,不过我是保险起见,按上面的方法(被问题搞怕了)。

4. 编译结果

编译的时候它会下载不少jar,需要一点时间。

编译完毕后在源代码目录下会有一个build目录,进去后有个distributions目录,再进去,里面有编译好的Gradle环境包 xxx-bin.zip,直接解压即可。如下:

解压后,会有下面的目录:

bin目录下有gradle.bat,用来编译其他项目的脚本,所以可以把bin目录添加到环境变量里面,这样在任意命令行目录都可以执行gradle xxx

lib目录是编译出来的jar包,包含了很多module,后面如果我们修改了某个源代码文件,编译出jar包后,那就直接替换lib里面的jar,然后再去编译其他的项目,就可以验证我们的修改。

接下来会进行源代码流程分析。

时间: 2024-11-08 19:12:08

3. Gradle源代码编译以及源代码分析的相关文章

spring源代码系列(一)sring源代码编译 spring源代码下载 spring源代码阅读

想对spring框架进行深入的学习一下,看看源码,提升和沉淀下自己,工欲善其事必先利其器,还是先搭建好开发环境吧. 环境搭建 sping源代码之前是svn管理,如今已经迁移到了github中了.新版本号基于gradle构建项目.所以构建sping源代码环境必须先安装github以及Gradle. 当然了假设不想安装githubclient能够直接去git下载项目:spring中git地址https://github.com/spring-projects/spring-framework 安装g

Android源代码和内核源代码的下载,编译和运行

笔者根据罗升阳老师的<Android 系统源代码情景分析>一书,尝试下载,编译和运行Android源代码和内核源代码.但可能是软件源"被墙"或版本更新的原因,期间遇到诸多问题.笔者求助于强大的度娘和谷歌,终于编译成功,现将修改的步骤记录如下: 一.下载相关的工具包和依赖包 1.git工具的下载,不多说 2.Java SDK的下载(参考网址:http://blog.csdn.net/zjclugger/article/details/11762085) 此处建议下载jdk1.

MYSQL 源代码 编译原理 AST和解析树 代码语法解析

MYSQL 源代码 编译原理 AST和解析树 代码语法解析 http://blog.csdn.net/wfp458113181wfp/article/details/17082355 使用AST树 分类:             antlr              2013-12-02 22:39     255人阅读     评论(0)     收藏     举报 目录(?)[+] 第五章使用AST树中间结果来计算表达式值 创建ASTS 第五章.使用AST树中间结果来计算表达式值 现在我们已

Java前端编译:Java源代码编译成Class文件的过程

Java前端编译:Java源代码编译成Class文件的过程 在上篇文章<Java三种编译方式:前端编译 JIT编译 AOT编译>中了解到了它们各有什么优点和缺点,以及前端编译+JIT编译方式的运作过程. 下面我们详细了解Java前端编译:Java源代码编译成Class文件的过程:我们从官方JDK提供的前端编译器javac入手,用javac编译一些测试程序,调试跟踪javac源码,看看javac整个编译过程是如何实现的. 1.javac编译器 1-1.javac源码与调试 javac编译器是官方

.NET Framwork 之 源代码编译成托管代码托管代码合并成程序集

我们都知道,C#程序需要在 .NET Framework 的环境中运行. 一.程序运行所需的三个关键 1.IL(中间语言):编译器编译源代码时生成的代码. 2. Framework类库(Framework Class Library,FCL):FCL是一组DLL程序集的统称,其中包含数千个类型定义和功能. 3.CLR(公共语言运行时,Common Language Runtime):它和Java虚拟机一样也是一个运行时环境,是一个可由多种编程语言使用的运行环境.CLR的核心功能包括:内存管理.程

程序包管理RPM、YUM及源代码编译

一.YUM YUM: Yellowdog Update Modifier.YUM是通过分析RPM的标题相关数据后,根据软件的相关性制作出的软件安装时属性依赖的解决方案,其可以自动处理软件之间的依赖问题,以尽量方便用户解决软件在安装.删除或升级的问题. YUM分为YUM客户端和YUM服务器,而我们经常使用到的就是客户端. 客户端的配置文件分两种: /etc/yum.config:为所有的仓库提供公共的配置 /etc/yum.repos.d/*.repo:为仓库的指向提供配置 我们在安装软件时通常使

源代码编译成托管代码;托管代码合并成程序集;

.NET是如何将源代码编译成托管代码,又是如何将托管代码合并成程序集?首先,我们先了解下常见的CLR,.NET Framework,IL等名词. 一,说说常见的名词 CLR(公共语言运行 时,Common Language Runtime)和Java虚拟机一样也是一个运行时环境,是一个可由多种编程语言使用的运行环境.CLR的核心功能包括:内存管理.程序集加载.安全 性.异常处理和线程同步,可由面向CLR的所有语言使用.并保证应用和底层操作系统之间必要的分离.CLR是.NET Framework的

Mac OS X上尝试编译CoreCLR源代码

CoreCLR登陆GitHub之后,体验CoreCLR首当其冲的方式就是在自己的电脑上编译它,昨天分别在Windows与Linux上成功编译了CoreCLR,详见: 1)Windows上成功编译CoreCLR源代码 : 2)Linux上成功编译CoreCLR源代码 . Windows与Linux上编译成功之后,有一个挡不住的冲动——在Mac上编译CoreCLR.虽然微软目前优先考虑的是Windows与Linux两个平台,CoreCLR的编译暂时不支持Mac OS X,但我最期待的却是在Mac O

rpm yum 源代码编译

程序包的编译与安装 程序源代码-->预编译-->编译-->汇编-->链接-->运行 链接时关联到相关的数据库 编译又分静态编译:程序文件自带库动态编译:.so程序文件不自带库,而是共享操作系统的库来编译 API:应用程序接口 编译和开发源程序的接口 如果一个程序包在两个平台都支持posix标准 即在windows上开发的程序也可以在linux上编译,反之亦然 pos:可移植操作系统 后改名成posix posix标准即是该程序包在两个平台的api接口相同,意味着有关库的接口相