# gradle-study **Repository Path**: zhangxin123456/gradle-study ## Basic Information - **Project Name**: gradle-study - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-14 - **Last Updated**: 2021-10-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 课程导学 **会Ant,会Maven,为什么还要学会Gradle** - 一款最新的 ,功能最强大的构建 工具,用它逼格更高 - 使用程序代替传统的XML配置,项目构建更灵活 - 丰富的第三方插件,让你随心所欲使用 - 完善Android,Java开发技术体系 - 提升自动化构建技术深度 - 进阶为高级工程师 ## Gradle相关介绍及开发环境搭建 #### 领域特定语言DSL介绍 - 全称domain specific language - 有哪些常见的DSL语言及特点. - SQL,CSS,HTML,Shell,JSON等等 - DSL语言有别于其他通用语言如:C++,Java,C#,DSL常在特殊的场景或领域中使用 - 通用语言大而全,DSL语言小而细 ◆核心思想: 求专不求全 解决特定问题 #### groovy介绍 - 是一种基于JVM的敏捷开发语言 - 结合 了Python、Ruby和Smalltalk的许 多强大的特性 - groovy可以 与Java完美结合,而且可以使用java所有的库 ##### groovy特性 - 语法上支持动态类型,闭包等新一代语言特性 - 无缝集成所有已经存在的Java类库 - 即支持面向对 象编程也支持面向过程编程 ##### groovy优势 - 一种更加敏捷的编程语言 - 入门非常的容易, 但功能非常的强大 - 即可以作为编程语宫也可以作为脚本语言 - 熟练掌握Java的同学会非常容易掌握Groovy ##### Linux下环境的搭建 1. 安装好JDK环境 2. 到官网下载[groovySDK](https://groovy.apache.org/download.html),解压到合适的位置 ![image-20211014200005229](./images/image-20211014200005229.png) 3. 添加到环境变量 ![image-20211014195606030](./images/image-20211014195606030.png) ![image-20211014200205145](./images/image-20211014200205145.png) ##### 创建groovy工程 ![image-20211014200545669](./images/image-20211014200545669.png) ##### 永远的HelloWrold - 可以直接写Java代码 ![image-20211014201139254](./images/image-20211014201139254.png) - 使用Groovy实现 ![image-20211014201408500](./images/image-20211014201408500.png) - 编译之后还是会有类和main方法 ![image-20211014202446670](./images/image-20211014202446670.png) ## Gradle核心语法讲解及实战 ### groovy基础语法 #### groovy中的变量 - 变量的类型 - 基本类型(定义为基本类型会自动转为对应的包装类型) - 对象类型 - 变量的定义 - 强类型定义方式 (声明变量时直接指定类型) - 弱类型def定义方式(编译器自动推断类型) - 变量只是自己使用不会使用于其他类或者模块推荐def - 变量会被其他类使用推荐定义为强类型 ```groovy package variable int x = 10 println x.class double y = 3.14 println y.class def x_1 = 11 println x_1.class def y_1 = 3.1415 println y_1.class def name = 'Qndroid' println name.class x_1 = 'Test' println x_1.class ``` ![image-20211014205815445](./images/image-20211014205815445.png) #### groovy中字符串 **字符串** - String - GString - 常用的三种定义方式 - 新增操作符 - 新增API讲解 默认 单引号、双引号、还是三引号创建的都为 java.lang.String 类型 ```groovy package variable def name = 'a single \'a\'string' println name println name.class def thupleName = '''\ line one line two line three ''' println thupleName def doubleName = "this a common String" println doubleName.class name = "Qndroid" println name.class def sayHello = "Hello: ${name}" println sayHello Hello: Qndroid println sayHello.class //class org.codehaus.groovy.runtime.GStringImpl ``` ![image-20211014222331351](F:\个人笔记\gradle-study\images\image-20211014222331351.png) ```go def sum = "the sum of 2 and 3 equals ${2 + 3}" //可扩展做任意的表达式 println sum // the sum of 2 and 3 equals 5 def result = echo(sum) println result.class // class java.lang.String String echo(String message) { return message } ``` #### 字符串方法详解 **String方法** - java.lang.String - DefaultGroovyMethods - stringGroovyMethods - 普通类型的参数 - 闭包类型的参数 - 字符串填充 ```groovy def str = "groovy" //字符串为中心开始填充 println str.center(9,"c") //cgroovycc //从已有字符串左边开始填充 println str.padLeft(9, 'a') //aaagroovy //从已有字符串右边开始填充 println str.padRight(9, 'b') //groovybbb ``` - 字符串比较 ```groovy def str = "groovy Hello" def str2 = 'Hello' println str > str2 // true println str[0] // g println str[0..4] // groov println str - str2 // groovy println str.minus(str2) // groovy 和上面减法一样 ``` - 字符串常用方法 ```groovy def str = "groovy Hello" // 倒序输出 println str.reverse() // olleH yvoorg // 首字母大写 println str.capitalize() // Groovy Hello //是否为数字类型字符串 println str.isNumber() //false ``` #### 逻辑控制 - 顺序逻辑 - 单步往下执行 - 条件逻辑 - if/else - switch/case - 循环逻辑 - for循环 - while循环 - switch/case ```groovy package variable def x = 1.23 def result switch (x) { case 'foo': result = 'found foo' break case 'bar': result = 'bar' break case [ 4, 5, 6, 'inlist']: //列表 result = 'list' break case 12..30: result = 'range' //范围 break case Integer: result = 'integer' break case BigDecimal: result = 'big decimal' break default: result = 'default' } //输出结果: big decimal ``` - 循环逻辑 ```groovy //对范围的for循环 def sum = 0 for (i in 0..9) { sum += i } //println sum sum = 0 /** * 对List的循环 */ for (i in [1, 2, 3, 4, 5, 6, 7, 8, 9]) { sum += i } /** * 对Map进行循环 */ for (i in ['lili': 1, 'luck': 2, 'xiaoming': 3]) { sum += i.value } ``` ### groovy闭包讲解 #### groovy中闭包基础详解 - 无参数闭包 ```go package variable def clouser= {println("Hello Groovy")} clouser.call() //调用闭包 clouser() //调用闭包 // 执行后输出两次 Hello Groovy ``` - 带参数闭包 ```groovy def clouser= { String name -> println("Hello ${name}")} def name = "zzxx" clouser(name) // 执行后输出 Hello zzxx ``` - 多个参数 ```groovy package variable def clouser= { String name , int age -> println("Hello ${name} my age is $age" ) } def name = "zzxx" clouser(name,12) ``` - 默认参数it ```groovy package variable def clouser= { println("Hello ${it} " ) } def name = "zzxx" clouser(name) ``` - 闭包返回值 > groovy 中闭包一定有返回值 ```groovy package variable def clouser = { return "Hello ${it} " } def name = "zzxx" def result = clouser(name) println(result) clouser = { println("Hello ${it} ") } result = clouser(name) println(result) ``` ![image-20211015105053913](C:\Users\Administrator\Desktop\Gradle3.0自动化项目构建技术精讲\images\image-20211015105053913.png) #### groovy中闭包使用详解 ##### 与基本类型的结合使用 ##### 与String结合使用 ##### 与数据结构结合使用 ##### 与文件等结合使用 #### groovy中闭包进阶讲解 groovy数据结构 groovy面向对象 ## Gradle高级用法实战 ## Gradle核心之Project详解及实战