gradle和groovy
我是学习一篇CSDN博客,然后总结的这篇笔记,直接看这篇笔记可能会云里雾里,所以请先参考原文:http://blog.csdn.net/innost/article/details/48228651
gradle基础:
1、使用groovy语言,groovy继承自java;
2、是一种DSL(领域相关语言),如《智取威虎山》中的行话。
3、gradle project-path:tasks ,查看Project包含哪些Task信息,gradle tasks会列出每个任务的描述,通过描述,我们大概能知道这些任务是干什么的。
4、Gradle工作包含三个阶段:
a 首先是初始化阶段。对我们前面的multi-project build而言,就是执行settings.gradle
b 下一个阶段是Configration阶段。Configration阶段的目标是解析每个project中的build.gradle。比如multi-project build例子中,解析每个子目录中的build.gradle。在这两个阶段之间,我们可以加一些定制化的Hook。这当然是通过API来添加的。Configuration阶段完了后,整个build的project以及内部的Task关系就确定了。恩?前面说过,一个Project包含很多Task,每个Task之间有依赖关系。Configuration会建立一个有向图来描述Task之间的依赖关系。所以,我们可以添加一个HOOK,即当Task关系图建立好后,执行一些操作。
c 最后一个阶段就是执行任务了。当然,任务执行完后,我们还可以加Hook。
5、Gradle主要有三种对象,这三种对象和三种不同的脚本文件对应,在gradle执行的时候,会将脚本转换成对应的对象:
a Gradle对象:当我们执行gradle xxx或者什么的时候,gradle会从默认的配置脚本中构造出一个Gradle对象。在整个执行过程中,只有这么一个对象。Gradle对象的数据类型就是Gradle。我们一般很少去定制这个默认的配置脚本。
一般是gradle的相关信息,与项目无关?
b Project对象:每一个build.gradle会转换成一个Project对象。
Project对应具体的工程,一个Project包含多少Task往往是插件决定的。
在Project中,我们要:
1 加载插件。不同插件有不同的行话,即不同的配置。我们要在Project中配置好,这样插件就知道从哪里读取源文件等.加载一个gradle文件。
还可以加载一个gradle文件。把一些通用的函数放到一个名叫utils.gradle文件里。然后在其他工程的build.gradle来加载这个utils.gradle。这样,通过一些处理,我就可以调用utils.gradle中定义的函数了。
2 设置属性。
c Settings对象:显然,每一个settings.gradle都会转换成一个Settings对象。
groovy基础:
1、动态语言,扩展了java;语言与java相通,又像一种脚本语言,groovy先编译成java类字节码,然后通过JVM来执行这个java类。
2、安装groovy,配置,需要java环境。在groovy安装目录/bin下,有一个groovyConsole.bat,双击可以打开groovy编辑环境。Ctrl+R运行代码。
3、String类型第一个字母必须大写
4、闭包就是一段用中括号{}括起来的函数,比函数灵活,不需要定义。
5、当函数的最后一个参数是闭包的话,可以省略圆括号。比如:
def testClosure(int a1,String b1, Closure closure){ //dosomething closure() //调用闭包
}
那么调用的时候,就可以免括号!
testClosure (4, "test", { println"i am in closure"
} )
6、在groovy中,系统自带会加载当前目录/子目录下的xxx.groovy文件(经测试,即便没有指定包名)
7、利用groovyc编译成class文件去发现问题,当出现问题时,由于groovy是编译成class文件再执行,利用jd-gui打开class文件,查看源码。
8、在变量前加@Field,变量就是全局变量,不然变量只是方法内部变量,例如:
def x = 1
def printx(){ println x
}
这句代码报错,找不到x,因为变量x不在方法printx中。
注意,在使用Field的时候需要引入:
import groovy.transform.Field
在使用过程中肯定会有很多困难,通常都是百度解决方案,我们也可以自己通过查找官方文档来解决问题,下面是三个主要的链接文档:
http://www.groovy-lang.org/api.html groovy
https://docs.gradle.org/current/javadoc/ gradle api
https://docs.gradle.org/current/dsl/ gradle DSL 语法
gradle和groovy相关推荐
- Gradle与Groovy
Gradle与Groovy 每个build.gradle文件的内容,基本上是Groovy脚本,比如: apply plugin: 'java' 其实,它是Groovy脚本,即: apply([plug ...
- gradle的groovy语法案例详解
groovy的语法与python的语法有些类似 1.groovy的三个特性 1)不需要分号 2)不需要写get,set方法,对象里面默认会有get与set方法 3)方法的最后一个值默认为返回值,不需要 ...
- gradle groovy_Eclipse Mars:具有Gradle,Groovy和GSP支持的Grails 3.1
gradle groovy 如果您想像使用Groovy / Grails Tool Suite或以前的Eclipse版本一样容易地使用Eclipse Mars(4.5)开发Grails 3项目,该怎么 ...
- Gradle 从 Groovy 到 KTS 迁移
本文主要记录Groovy版本和kotlin版本的Gradle 相关设置.以便备忘或以后迁移参考. settings.gradle settings.gradle: pluginManagement { ...
- gradle风格的groovy代码
我们先来看一段gradle中的代码: buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.b ...
- 【Groovy】Gradle 构建工具 ( 自动下载并配置构建环境 | 提供 API 扩展与开发工具集成 | 内置 Maven 和 Ivy 依赖管理 | 使用 Groovy 编写构建脚本 )
文章目录 一.Gradle 自动下载并配置构建环境 二.Gradle 提供 API 扩展与开发工具集成 三.Gradle 内置 Maven 和 Ivy 依赖管理 四.Gradle 使用 Groovy ...
- Android Gradle(三)Groovy快速入门指南
本文首发于微信公众号「刘望舒」 原文链接:Groovy快速入门看这篇就够了 前言 在前面我们学习了为什么现在要用Gradle?和Gradle入门前奏两篇文章,对Gradle也有了大概的了解,这篇文章我 ...
- Gradle 之语言基础 Groovy
最近在学习 Android 中 Gradle 相关的知识,如果想学好 Gradle,必要的 Groovy 基础是不可少的.Groovy 语言的知识也是非常多的,如果只是想在 Android Gradl ...
- gradle groovy_适用于Java开发人员的Groovy吗? 认识Gradle,Grails和Spock
gradle groovy Java开发人员最感兴趣的Groovy用例有哪些? 尽管已经有一段时间了,但似乎只有Groovy最近才开始使用Groove. 对于某些人来说,它基本上只是另一种深奥的JVM ...
最新文章
- 蓝鸥原生JS:js的历史及JavaScript的优缺点
- 对象序列化与反序列化
- Spring——AOP
- Android开发——异步任务中Activity销毁时的问题
- 工业级PoE交换机的分类知识详解
- retryexec.java 94_解决feign调用接口不稳定的问题
- 一个函数统一238个机器学习R包,这也太赞了吧
- 微软小冰你这么智能 .net知道吗?
- Ubuntu Server 16.04服务器版配置图解教程14 - 安装PHP7.1.11(源码包安装)
- sop流程图模板_sop是什么意思(sop标准作业流程模板)
- 8.21: Hackday、慈善x快速迭代
- Sublime Text 3在行前插入递增数字序号的方法
- 埃及分数c语言实训报告,C语言实例 将真分数分解为埃及分数
- java中北大学ppt总结+课后习题第三章(小宇特详解)
- 美式英语口语中连读、略读,音变的技巧
- 知识点小记——广播地址与有限广播地址
- WGS84(GPS)、火星坐标系(GCJ02)、百度地图(BD09)坐标系转换案例教程(附转换工具下载)
- 引用pdf插件在线预览的问题
- Autocad2015点开闪退问题,线段等分
- 自媒体怎么赚钱?新手小白日入600+
热门文章
- 项目方案汇报,如何对甲方,专家和领导“投其所好”?
- android 电视设计方案,基于ANDROID4.X的智能电视电脑一体机的设计方案
- 2个适合新手可做的领域,做影视剪辑赚了2万多,容易违规扣分?
- WinForm控件之【MaskedTextBox】
- php readdir scandir,php - readdir vs scandir - 堆栈内存溢出
- AiHiX访谈屠文毅:生命美学与気@新龙门课站+稻.美学馆
- 佛说前世的五百次回眸才换来今生的擦肩而过!
- 上班族注意:消除脖子酸痛的方法!!!
- 本周回顾:Windows 11 iOS 互连、Edge、微软财报、Windows 10 22H2、新游戏合作协议、New Bing 等
- 2019CCPC网络赛 1002 HDU 6703(权值线段树)