大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一. Gradle简介
10年积累的成都做网站、网站设计、外贸营销网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有朗县免费网站建设让你可以放心的选择与我们合作。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源代码编译
下载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,然后再去编译其他的项目,就可以验证我们的修改。
接下来会进行源代码流程分析。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。