gradle项目管理工具
gradle基础概述
gradle是一款类似于maven的项目构建工具,青出于蓝而青于蓝,不过它比maven更加强大。
gradle的下载可以在其官网上下载:http.gradle.org;gradle的使用是基于java语言的,所以配置gradle的环境前必须配置好java的环境,
gradle的环境变量跟maven配置一模一样,GRADLE_HOME,然后在path路径中加上bin就可以了,测试可以用gradle -v命令即可测试。
gradle下面的bin目录中有两个文件:gradle跟gradle.bat,其中.bat是基于windows下的可配置文件,不带bat的是基于linux下的可配置文件,其他目录文件并无大用。
groovy概念:
groovy是用于java虚拟机的一种敏捷动态语言,它是一种成熟的面向对象语言,既可以用作面向对象编程又可以用作脚本语言,使用该种语言不必编写过多代码
又具有闭包跟动态语言中的其他特性。
idea新建groovy测试项目步骤:
file-new-project-Gradle【选择java】-填写GroupId跟 ArtifactId,这个跟maven一样是属于自定义的,然后下一步勾选Use auto-import,勾选这个可以在当需要一个
文件的时候项目中为我们自动下载,然后再勾选最后一个use local gradle distribution,勾选这个可以自动识别我们本地安装的gradle环境,如果idea不能自动识别那就手动
选择下目录也是可以的,后面的比较简单不做介绍;这样一个项目就创建好了。
然后可以在tools-groovy console可以打开groovy的控制台跟代码编写区域
编写groovy代码
这里面编写正宗的java代码是么有任何问题的,但是根据groovy语言的特性,可以删除掉分号,删除掉getter/setter方法也是可以的,最后一个值作为返回值,所以把return删除也是可以的,
public class GroovyTest{ private String name; private Integer age; public GroovyTest(String name,Integer age){ //此处删掉分号 this.name = name this.age = age; } public String getName(){ //此处删掉reutrn this.name; } public void setName(String name){ this.name = name; } //此处删掉setter跟getter方法 /*public Integer getAge(){ return this.age; } public void setAge(Integer age){ this.age = age; }*/ } GroovyTest groovyTest = new GroovyTest("张三",24); println groovyTest.name
运行结果:Result: 张三
描述下跟java的区别,可以用点调用属性值,用==比较对象不会抛出空指针异常,比如:
GroovyTest groovyTest = new GroovyTest("张三",24);
GroovyTest groovyTest1 = null;
println groovyTest1 == groovyTest;
运行结果为false
Groovy的高效特性
/** * groovy的高效特性 */ /**1.可选的类型定义 * 下面这种def定义的version变量,后面的值是啥类型就是啥类型,它是弱类型的,跟JavaScript有点类似,不像java一样 */ def version = 1; /** * 2.assert语句 * 这个他呀的没听懂 * 反正两个version执行会报错 */ //assert version == 2; /** * 3.括号是可选的 * 下面这个verson的括号去掉也没问题 */ println (version); /** * 4.字符串 * 字符串有是那种表达形式: * s1 单引号:'',它仅仅是一个字符串 * s2 双引号:"",它可以插入一个变量,写法如下 * s3 三个三引号他可以换行 */ def s1 = 'my name is wuyawei'; def name = "武亚伟"; def s2 = "my name is${name}"; def s3 = '''my name is wuyawei'''; println s1; println s2; println s3; /** * 5.集合API * 集合有两种形式,一个是List,一个是Map */ def myList = ['ant','maven']; myList << 'gradle'; //给集合添加一个元素 assert myList.getClass() == ArrayList; //把自定义的集合给ArrayList assert myList.size() == 3; //代码为报错,说明正确 println myList.getClass(); //用来查看他的类型:class java.util.ArrayList def myMap = ['张三':'24岁','李四':'25岁']; myMap.王五 = '26岁'; //给map中添加一个元素 println myMap.张三; //根据map的key打印value println myMap['王五']; //根据map的key打印value println myMap.getClass(); //用来查看他的类型:class java.util.LinkedHashMap /** * 6.闭包 *暂时不说了,这个貌似不常用 */
Groovy基础知识【下面是一段groovy的脚本以及解析】
//构建脚本中默认都是有个Project实例的 /** * 不太懂,但是还是解析下这段代码 * 其中apply跟version是project的属性,并且给定了他的值 * repositorys跟dependencise是project的方法,mavengentral跟compile是他的闭包 */ apply plugin:'java'; version '0.1'; repositorys { mavenGentral() } dependencies { compile 'commons-codec:commons-codec:1.6'; }
gradle有个缺陷就是我们创建好项目之后他没有为我们自动创建项目目录,可以手动创建也可以写脚本执行脚本创建
当创建好项目之后右边跟maven一样会有个gradle的按钮了,点击后:【详细的看下图】
其中task-build里面包含了gradle的构建命令,可以看到跟maven稍有不同
其中jar命令最为重要,它执行了将项目编译并且打包的操作,运行后会在项目下生成build文件夹--libs--下面就是生成的项目jar文件了,详细的看下图
如何给gradle添加插件呢?这个有了groovy语言后这个就变得异常简单了,我们只需要在构想项目的build.gradle文件夹下添加一行代码即可:看图
然后刷新gradle,就会发现gradle的命令行多了一个war的命令,运行war命令之后同样会打包成war包,目录跟jar的目录一样,
一半来说,war包是web项目需要达成的包形式,而后我们把war包放在tomcat的webapps目录下,运行tomcat自动解压war包,浏览器访问即可
构建脚本介绍
在一个gradle中必须有至少一个项目,当然可以有多个project,一个项目中至少包含一个task,当然可以有多个任务,项目之间可以有依赖关系,任务之间也可以有依赖关系,这方面跟maven类似,
project的常用属性跟方法:group,name,version等,通过这几个属性可以确定一个项目的唯一坐标,也就是确定唯一的组件,其中name属性跟maven中的artificId使用一样,其次还有apply,dependence,repository,task,其中apply表示依赖那个插件,比如:java,war等,dependence表示此项目的依赖,repository表示仓库,暂时不理解,task表示项目中需要执行的任务,这个是重点,task主要包含任务动作跟任务依赖,任务动作定义了一个最小的工作单元,可以依赖其他任务,工作序列跟执行条件等。任务中的方法有dependencOn,doFirst,doLast,其中doFirst表示任务之前要执行的,doLast相反,一个任务中可以执行多个doFirst或者doLast