Groovy语言学习和Gradle项目搭建笔记 (上)
来源:互联网 发布:黑暗之光坐骑升阶数据 编辑:程序博客网 时间:2024/06/16 00:04
Groovy 是 用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。
Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操作很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的结合编程。
================》》》》》》》》》》》》》》理论特点部分Groovy 语言特点 1.groovy最后也会被java虚拟机编译成字节码 2.代码行位分号可以选的 3.类和方法默认是public 4.属性会自动添加getter/setter方法 5.属性可以直接用点号获取 就像json对象获取属性一样 6.方法最后一个表达式的值会作为返回值 可以省略return 7. == 比较是使用java的equals方法 并且不会抛空指针异常 高效特效 1.assert 可以在任何地方断言使用 2.变量类型是弱类型 def 和js的var 差不多 3.调用有参方法,可以省略括号不写 4.字符串有三种 双引号,单引号,三个单引号。 5.集合API有更简洁的写法 6.闭包: 就是一段代码块 可以作为方法参数传入 也可以赋值给某一个变量//实例demo部分//定义版本class ProjectVersion{ private int major; private int minor; ProjectVersion(int major,int minor){ this.major = major; this.minor = minor; } int getMajor() { major } void setMajor(int major) { this.major = major } int getMinor() { minor } void setMinor(int minor) { this.minor = minor }}ProjectVersion v1 = new ProjectVersion(1,1)ProjectVersion v2 = null//没有空指针抛出println v1 == v2//弱类型变量def version = 1//在任何地方都可以使用断言assert version == 1//单纯字符串def s1 = 'aaa version is '//可插入变量引用的字符串def s2 = "bbb${version}"//可以进行换行的字符串def s3 = '''cccis'''//有参方法调用 可以省略括号 每行结束可以省略分号println s1println s2println s3//集合的使用//list 默认对应的是ArrayListdef buildTools = ['ant','maven']//等同于 list对象的 add('gradle') 进行添加一个元素buildTools << "gradle${version}"assert(buildTools.getClass() == ArrayList);assert buildTools.size() == 3println buildTools.get(2)//mapdef buildYears = ['ant':2000,'maven':2004]//往map中添加值buildYears.gradle=2009println buildYears.antprintln buildYears['gradle']println buildYears["maven"]println buildYears.getClass()//闭包就是一个代码块 可以有参数也可以没参数// 可以赋值给一个变量 也可以作为匿名方法作为参数使用 就是一个没有方法名的方法//可以被直接调用//闭包代码块def c1 = { //v 是c1方法的参数 类型可以省略 -> 后面就是方法体 v -> println v}//闭包代码块def c2 ={ println 'hello'}//使用closure时候 不能导入任何包 因为那是java的 导入就会报错//定义方法 入参类型为闭包代码块def method1 (Closure closure){ //调用闭包 传入 'param'作为参数 closure 'param'}//定义方法 入参类型为闭包代码块def method2(Closure closure){ //调用闭包 closure ()}def method3(LinkedHashMap map){ //调用 println "调用map参数的方法" println map.gradle}//调用方法method1(c1)//调用方法method2(c2)//调用map参数的方法method3 buildYears//gradle生成的build脚本 该脚本就是调用build.gradle脚本实例化的project类中的方法,进行构建项目的,所以创建成功 会生成gradle目录和build目录//构建脚本中 默认都有个project实例//调用project实例上的group方法group 'demo'//调用project实例上的version方法 参数类型是一个Stringversion '1.0-SNAPSHOT'//调用project实例上的apply 方法 参数类型是一个LinkedHashMap 声明使用的插件apply plugin: 'groovy'//调用project实例上的apply 方法 参数类型是一个LinkedHashMap 声明使用的插件apply plugin: 'java' //添加war插件 有什么插件可使用 可以查看官网 加入这个插件打包jar 并 多出一些可使用的命令apply plugin :'war' //添加war插件 有什么插件可使用 可以查看官网 加入这个插件打包war //java版本sourceCompatibility = 1.8//调用project实例上的repositories方法 {闭包代码块作为该方法的参数传入} 这里是指定依赖仓库repositories { //调用project的空参数方法 mavenCentral()}//调用project实例上的dependencies方法 {闭包代码块作为该方法的参数传入} 这里是声明依赖dependencies { //调用compile方法 参数为'org.codehaus.groovy:groovy-all:2.3.11' 类型为字符串 compile 'org.codehaus.groovy:groovy-all:2.3.11' //testCompile 参数为LinkedHashMap类型 testCompile group: 'junit', name: 'junit', version: '4.12'}//创建一个执行目录生成的闭包def createDir = { path -> File dir = new File(path); if(!dir.exists()){ dir.mkdirs(); }}//声明一个自定义创建目录任务task makeJavaDir(){ def paths = ['src/main/java','src/main/resources','src/test/java','src/test/resources'] //调用doFirst[任务动作列表前执行]方法,参数是一个闭包,闭包中调用了paths.forEach(createDir)方法 doFirst{ paths.forEach(createDir);//将循环的每一元素传入闭包中进行调用 }}//声明一个自定义创建目录任务task makeWebDir(){ //依赖makeJavaDir任务 每次执行该任务就会先执行依赖的任务 dependsOn 'makeJavaDir' def paths = ['src/main/webapp','src/test/webapp'] //调用doLast[任务动作列表后执行]方法,参数是一个闭包,闭包中调用了paths.forEach(createDir)方法 doLast{ paths.forEach(createDir);//将循环的每一元素传入闭包中进行调用 }
打包[打包类型 根据build.gradle脚本参数决定] 如果是idea
大概整理一下其中的命令
Source Sets
Tasks
–build
– …
–build //点击执行打包构建命令 打包类型根据build.gradle脚本配置有关 会处理test目录的资源文件也会打包test目录的文件
–classes //点击执行重新编译生成的包文件命令
–clean //点击执行清空生成的包文件
–jar //执行打包命令 打包成jar 不会处理test目录的资源文件也不会打包test目录的文件
–war //如果添加war插件 则会出现该命令 打包成war包 不会处理test目录的资源文件也不会打包test目录的文件
–…
–build setup
–documentation
–help
–other //这里面的命令就是处理资源文件 编译文件
–verification
Run Configurations //配置启动参数
构建脚本
group 分组 n
ame 名字 version版本 用来确定依赖的坐标
build.gradle 中常用方法 apply[所需插件]、dependencies[所需依赖]、repositories[指定依赖仓库],task[自定义任务]
属性的配置方式 ext、 或者建立gradle.properties文件来声明属性
taskdependsOn 声明任务依赖于上一个任务动作[会先执行所依赖的任务] 一个任务包含多个任务动作 doFirst[任务动作列表前添加动作]、doLast<<[任务动作列表后添加动作] 一个任务可以包含多个doFirst和doLast 自定义任务名称 存在于other 中。
- Groovy语言学习和Gradle项目搭建笔记 (上)
- gradle学习笔记(二) Groovy基础
- gradle学习笔记(三) Groovy闭包
- gradle学习笔记(四) Groovy高级用法
- Groovy学习笔记 一 、搭建
- 学习Groovy和Gradle中的思考
- gradle学习(7)-groovy
- Spring Boot学习(1)—— mac上Intellij使用Gradle构建Spring Boot项目,并使用Groovy
- Gradle学习笔记--框架搭建
- Groovy学习笔记1--Groovy的下载和安装
- Groovy学习笔记1--Groovy的下载和安装
- Gradle学习笔记 Gradle介绍和安装
- Groovy语言学习
- Gradle基础——Groovy语言
- Gradle 入门之 Groovy 语言详解
- Gradle构建之Groovy语言基础
- Ubuntu上搭建groovy 环境
- 【转/摘录】Gradle学习笔记--框架搭建
- 读写锁ReadWriteLock
- poj 1178 食物链
- Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variab
- hibernate注解主键生成策略
- 静态与非静态方法
- Groovy语言学习和Gradle项目搭建笔记 (上)
- 关于spring boot使用velocity作为视图层模板
- hdu 3783 ZOJ
- HDOJ 3549 Flow Problem(network flow)
- linux初学者-正则表达式
- Hibernate学习-用oracle sequence序列生成ID的配置示例
- HTML入门笔记15-HTML中插入外部链接
- 简单LinuxC程序之位运算的简单应用
- Could not get BatchedBridge, make sure your bundle is packaged correctly