一、Gradle是什么
Gradle是一种Java应用构建工具,它采用领域特定语言 Groovy 语法实现配置。
1、Gradle的基本概念
项目:项目的配置 即 build.gradle。
任务:任务的配置包含在项目配置中。
多项目:多项目的配置即 gradle.settings, 对于只有一个项目的构建而言是 gradle.settings 可选的。
1.1、项目 (build.gradle)
- 每个Gradle的构建由一个project构成,它代表着需要被构建的组件或者构建的整个项目。
- 项目是指我们的构建产物(比如Jar包)或实施产物(将应用程序部署到生产环境)。
1.2、任务
- 一个项目包含一个或多个任务。
- 任务 task 代表着 Gradle 构建过程中可执行的最小单元。
例如:当构建一个组件时,可能需要编译、打包、生成文档、发布等多个步骤,其中的每个步骤都可以定义成一个task。
- 任务是指不可分的最小工作单元,执行构建工作(如:编译项目或执行测试)。
- Gradle构建脚本(build.gradle)指定了一个项目和它的多个任务。
1.3、多项目(gradle.settings)
- 如果我们的构建中包含多于一个项目,那么它就是必须的
- 它描述了哪一个项目参与构建。每一个多项目的构建都必须在项目结构的根目录中加入一个设置文件。
1.4、属性文件 gradle.properties
- Gradle属性文件(gradle.properties)用来配置构建属性。
1.5、gradle插件
Gradle插件提供Gradle的各种特性,一个Gradle插件能够:
- 在项目中添加新任务
- 为新加入的任务提供默认配置,这个默认配置会在项目中注入新的约定(如:源文件位置)。
- 加入新的属性,可以覆盖插件的默认配置属性。
- 为项目加入新的依赖。
Gradle用户手册提供了一系列标准Gradle插件,如:
- java 插件
- war 插件
- application 插件
2、如何使用gradle
Gradle通过插件提供各种特性,在build.gradle配置文件中,加入gradle插件的方法有两种:
2.1、根据名称或类型来指定Gradle插件
如:下面代码通过名称指定Gradle插件(这里的名称是 foo):
2.2、通过类型指定Gradle插件
如:下面代码通过类型指定Gradle插件(这里的名称是 com.bar.foo)
二、安装和使用gradle
1、下载和安装Gradle
1.1、下载解压 Gradle
https://gradle.org/install
1.2、设置环境变量
设置环境变量 GRADLE_HOME=D:TOOLSGRADLE3.2.1
配置path %GRADLE_HOME%/bin
1.3、验证安装
C:Usersliangshengqi>gradle -v
------------------------------------------------------------
Gradle 3.2.1
------------------------------------------------------------
Build time: 2016-11-22 15:19:54 UTC
Revision: 83b485b914fd4f335ad0e66af9d14aad458d2cc5
Groovy: 2.4.7
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_131 (Oracle Corporation 25.131-b11)
OS: Windows 10 10.0 amd64
C:Usersliangshengqi>gradle -version
------------------------------------------------------------
Gradle 3.2.1
------------------------------------------------------------
Build time: 2016-11-22 15:19:54 UTC
Revision: 83b485b914fd4f335ad0e66af9d14aad458d2cc5
Groovy: 2.4.7
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_131 (Oracle Corporation 25.131-b11)
OS: Windows 10 10.0 amd64
2、使用gradle创建一个Java项目
2.1、使用java插件
创建build.gradle, 代码如下:
apply plugin: 'java'
Java插件会在我们的构建中添加一些新的约定(如默认的项目结构),新的任务,和新的属性。
默认的项目结构如下:
- src/main/java目录包含了项目的源代码。
- src/main/resources目录包含了项目的资源(如属性文件)。
- src/test/java目录包含了测试类。
- src/test/resources目录包含了测试资源。
- build目录我们构建生成的文件都会这里创建,这个目录涵盖了以下的子目录
- classes目录包含编译过的.class文件。
- libs目录包含构建生成的jar或war文件。
2.2、开发和配置运行主类
编写一个运行主类
在build.gradle中配置主类
2.3、编译打包
我们可以通过使用两个不同的任务来打包项目。
方法1:在命令提示符中执行命令gradle assemble
方法2:在命令提示符中执行命令gradle build
两者区别:
assemble任务仅仅执行项目打包所必须的任务集。
build任务执行项目打包所必须的任务集,以及执行自动化测试。
这两个命令都会在build/libs目录中创建一个HelloGradle.jar文件。
默认创建的Jar文件名称是由这个模版决定的:[projectname].jar,
此外,项目的默认名称和其所处的目录名称是一致的。
因此如果项目目录名称是Helloworld,那么创建的Jar文件名称就是Helloworld.jar。
2.4、运行程序
在执行gradle assemble或gradle build命令生成一个新的jar文件之后,我们可以执行以下命令运行jar文件:
三、为什么引入gradle?
1、为什么需要打包
最初写完了程序,直接右键run就可以了。但是程序写完了是要发布到服务器上或者给别人用的,你第一不可能让所有要运行的人都装个eclipse,第二不可能把源代码公布给所有人。所以你需要把你的代码发布成二进制形式,让其它环境方便运行,这就是打包。
2、为什么用ant?--支持自动化打包
打包的时候要做很多事,
比如说配置文件中的用户名和密码,你本地开发和程序实际运行时的内容肯定不一致,
所以需要有两个文件,开发的时候用一个,实际运行的时候用一个。
这样每次打包的时候都要重复的做这些事,ant可以让你用xml的形式把这些事情写成脚本,然后自动运行。
3、为什么用maven?-支持依赖管理
你的项目要用很多jar包,比如你写日志要用个log4j吧,连数据库要用个connector吧。这年头写程序不用个spring都不好意思出门,下载下来的spring包打开一看,密密麻麻的好几十个jar,不知道用哪个不用哪个。而且,即便是你一狠心把这些jar包都放进来,很大可能性还是不能运行,因为还要依赖其它的jar包。哪天想升级个spring小版本,所有jar包都要重来一遍,你也不记得哪些是由于spring引进来的jar包了。
所以有了maven,你只要配置一下说我要用spring 3,所有jar包都给你下载好了,你直接运行就行了。赶明儿想升级版本,直接把3改成4,新的jar包也给你下载好了。
4、为什么使用gradle?- 支持两者的优点,还能写脚本呢!!!
用了maven,jar包是方便了,但我打包的时候还是有好多事要做啊,然后你会发现maven实在是不知道怎么做这些事,于是开始怀念ant。
gradle就是又能干maven的活,又能干ant的活,用groove语言写脚本,表达能力还更强。