概述
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 = '''cc
c
is'''
//有参方法调用 可以省略括号 每行结束可以省略分号
println s1
println s2
println s3
//集合的使用
//list 默认对应的是ArrayList
def buildTools = ['ant','maven']
//等同于 list对象的 add('gradle') 进行添加一个元素
buildTools << "gradle${version}"
assert(buildTools.getClass() == ArrayList);
assert buildTools.size() == 3
println buildTools.get(2)
//map
def buildYears = ['ant':2000,'maven':2004]
//往map中添加值
buildYears.gradle=2009
println buildYears.ant
println 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方法 参数类型是一个String
version '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项目搭建笔记 (上)的全部内容,希望文章能够帮你解决Groovy语言学习和Gradle项目搭建笔记 (上)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复