首页 > 代码库 > Gradle入门笔记
Gradle入门笔记
引言:Gradle是一种构建工具,它抛弃了基于XML的构建脚本,取而代之的是采用一种基于Groovy的内部领域特定语言。
Groovy是一种基于JVM的敏捷开发语言,其开发效率比java高,但对比特殊的编译性语言Java( Java文件将编译成JVM可辨识的二进制文件.class ),groovy作为一个动态的脚本语言,由于元编程特性(元编程简单来说就是,编写运行时操作语言构建的代码,用代码操作代码),groovy对比java效率低。下图为groovy与java的demo效率对比图:
- 自动处理包相依关系 - 取自 Maven Repos , Ivy 的概念
- 自动处理布署问题 - 取自 Ant 的概念
- 条件判断写法直觉 - 使用 Groovy 语言(简单理解动态脚本语言,开发效率高)
Gradle安装
2.填写好点击下一步
3.此时应该发现Gradle的建立和Maven相差无几,把上面的两项勾上,让IDE去做它该做的事情,点击下一步。
4.继续点击下一步。
5.此时我们发现一个熟悉的java项目结构出现了
6.点击打开build.gradle,下面大致说明一下此文件的意义
在Gradle中,有两个基本概念:项目和任务。请看以下详解:
项目是指我们的构建产物(比如Jar包)或实施产物(将应用程序部署到生产环境)。一个项目包含一个或多个任务。
任务是指不可分的最小工作单元,执行构建工作(比如编译项目或执行测试)。
build.gradle是gradle项目的构建脚本,里面指定了项目与任务。紧接着仔细说一下IDEA构建出项目后build.gradle默认的语句含义。
group ‘JryLearnGradle‘,version ‘1.0-SNAPSHOT‘ :
build名,版本号。
apply plugin: ‘java‘ :
Gradle与Maven一样,特性都是由plugin提供的,Gradle为我们提供了许多有用的插件,apply plugin :‘java‘ ,则是把gradle为java开发写的插件源码引用到build.gradle中(gradle中的plugin都是用groovy写好的代码)
repositories {
mavenCentral()
} :
Gradle仓库可以使用maven或ivy的仓库,我们团队基本使用maven,而IDEA默认使用了Central Maven 2的仓库,而加入maven仓库,gradle提供了三种选择给我们使用,分别是:
mavenCentral()别名,表示依赖是从Central Maven 2 仓库中获取的。
jcenter()别名,表示依赖是从Bintary’s JCenter Maven 仓库中获取的。
mavenLocal()别名,表示依赖是从本地的Maven仓库中获取的。
我们可以更改代码 mavenCentral() 选择不用的方式,当然gradle还提供了另外一种方式让我们构建依赖仓库来源,那便是url的方式,下面是使用url方式的方法:
repositories {
maven {
http://maven.aliyun.com/nexus/content/groups/public url ""
}
}
dependencies {
compile group: ‘foo‘, name: ‘foo‘, version: ‘0.1‘
testCompile group: ‘junit‘, name: ‘junit‘, version: ‘4.11‘
} :
这处申明外部依赖,这些依赖存放在外部仓库中。一个外部依赖可以由以下属性指定:
group属性指定依赖的分组(在Maven中,就是groupId)。
name属性指定依赖的名称(在Maven中,就是artifactId)。
version属性指定外部依赖的版本(在Maven中,就是version)。
testCompile是test需要的外部依赖,而compile则是项目运行需要的依赖声明,依赖的声明可以使用快捷方式:
dependencies {
compile ‘foo:foo:0.1‘
testCompile ‘junit:junit:4.11‘
}
默认的build.gradle文件也就解释完了,后面再一点点补充,现在回到我们跑demo的目的,我们是为了建立一个多项目的Spring boot,因此我们需要为SpringBootInGradle添加module,操作和maven差不多。
额外打开一下setting.gradle文件,发现里面就一句 rootProject.name = ‘SpringBootInGradle‘ ,就是project,没啥其他东西,先不管,往后操作。
7.右键项目名,new module
8.分别建立JryCore,JryBasicServer子module,点击next
9.此时我们的项目结构如下图
很简练,就是和我们推倒的一样,接着干。
此时发现,project中有三个build.gradle,里面的东西都一模一样,重复,如论从哪点考虑,我们作为一个多project的project,应该有module通用的依赖。接下来我们要做的是做到module在parent中的build.gradle配置。
9.把module中重复的配置转移到根项目的构建脚本,build.gradle修改添加代码,如下图:
此时发现两段内容代码都是一样的,还是重复,再修改,如下图:
第一个方式是针对某个project的操作,第二个是对根项目下的子项目的通用配置方式
如果是多项目构建中的所有项目共享,可以在根项目中的build.gradle加入allproject{}
10.在JryBasicServer中建立一个类HelloWorld,类中定义方法getString()
11.修改根项目build.gradle文件,如下图
- 它可以用来建立公司内部的配置,如定义公司内部的仓库地址。
- 它可以用来配置一些全局属性,比如配置持续集成服务器的地址等配置。
- 它可以用来提供构建所需要的用户的个人信息,如仓库或数据库的用户名和密码。
- 它可以用来定义开发者机器的环境,比如定义jdk安装在什么位置,android sdk安装在什么位置等等。
- 最重要的功能之一,它可以用来注册一些监听器。比如监听Gradle事件的发生,做一些额外的操作,例如需要对某个项目构建前和构建后做一些操作,又例如对项目的依赖做检测,检测是否含有snapshot包,在release构建中一般来说是禁止依赖snapshot包的,所以这时候就可以扔出一个异常。
- 重定向日志。我们可以将gradle默认的日志进行重定向,甚至我们可以不输出默认日志,自定义如何输出gradle产生的日志信息。
此时一个多project的SpringBoot版HelloWorld就完成了,需要打包只需点击Gradle projects的build
成功build后,我们可以发现在libs中有我们需要的jar包了。
一个简单的demo就跑完了,以上都是走马观花式的操作,下面来分析一下Gradle的原理与总结吧。
Gradle入门笔记