Gradle入门

2019-06-02  本文已影响0人  N8_xEnn7nA1

前言

Java 作为一门世界级主流编程语言,有一款高效易用的项目管理工具是 Java 开发者想要的。先是 2000 年的 Ant,后有 2004 年Maven 的诞生,都在 Java 市场上取得了巨大的成功。但二者都有一定的不足和局限性。

2012年基于 Ant 和 Maven 产生的 Gradle,弥补了 Ant 和 Maven 的不足,带来了一些更高效的特点。它使用了一种更高效的特点。它使用一种基于 Groovy 的特定领域语言(DSL)来声明项目设置,抛弃了基于 XML 的各种繁琐配置。

Gradle 面向 Java 应用为主,当前支持的语言限于 Java、Groovy 和 Scala,计划未来支持更多的语言。

安装配置

下面以 MacOS 环境为例。

image.png image.png image.png

gradle 项目目录结构

groovy 简单语法

快速使用 groovy :
IDEA 2017.2 -> Tools -> Groovy Console

image.png
println("Hello, world")

//groovy 中可以省略末尾的分号

//定义变量
//def 是弱类型的,groovy 会根据情况给变量赋予相应的类型
def i = 8
println("i=" + i)

def s = "xiaoming"
println(s)

//定义一个集合类型
def list = ['a', 'b']
list << 'c'
list.add('d')
println(list)
println("list[2]=" + list[2])
println("list[2]=" + list.get(2))
println("list[3]=" + list.get(3))

def list1 = [1, 2]
list1.add(3)
println("list1=" + list1)

//定义一个map类型
def map1 = ['k1':'v1', 'k2':'v2']
map1.put('k3', 'v3')
println("map1=" + map1)
println(map1.get('k2'))

groovy 中的闭包

//groovy 中的闭包
//什么是闭包? 闭包其实就是一段代码块.
//在 gradle 中,我们主要是把闭包当作参数来使用
def b1 = {
    println("hello b1")
}

println("====================== 分割线 =====================")

//定义一个方法,里面需要闭包类型的参数
// 注意:这里输入 Closure 时,不要导入代码提示中的任何包
def method1(Closure closure) {
    closure()
}

//调用方法 method1
method1(b1)

//定义一个有参数的闭包
def b2 = {
    v ->
        println("hello ${v}")
}

def method2(Closure closure) {
    closure("xiaoming")
}

method2(b2)

gradle 配置文件的介绍

image.png

导入 jar 包,可直接在 Maven 中央仓库搜索,以 spring-context 为例:

image.png

找到对应 gradle 方式的配置,添加到 build.gradle 文件中.

如上面 build.gradle 文件所示,gradle 默认使用的是 maven 中央仓库,添加 jar 包时,会从 maven 中央仓库下载 jar 包到指定目录(Mac 下是 /Users/用户名/.gradle)。

如果想使用本地的 maven仓库,可以指定环境变量 GRADLE_USER_HOME 为 本地 maven 仓库的路径,然后在 build.gradle 中添加 mavenLocal(),如下:

image.png

以上表示,先从本地仓库寻找 jar 包,若找不到,再从中央仓库下载.

gradle 工程,生成 jar 包

image.png

通过 gradle 构建 Web 工程

image.png

此时,webapp 目录的小图标中间有了一个蓝色的原点,表示不再是一个普通目录:

image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png image.png

gradle 工程拆分与聚合

新建 gradle 工程 gradle_02_parent,再对着 gradle_02_parent 点右键,新建3个 gradle 的 module,分别为:gradle_02_dao、gradle_02_service 和 gradle_02_web。并将 gradle_02_web 配置成 web 工程,即在 src/main 目录下添加 webapp 目录,并在 gradle_02_web 的 build.gradle 文件中添加 apply plugin: 'war'。

image.png

依赖包 jar 声明在 gradle_02_parent 下的 build.gradle 文件中,且用 allprojects 标签包着:

image.png

然后,在 gradle_02_dao,gradle_02_service,gradle_02_web 3个模块的 build.gradle 文件中 ,可以删除 gradle_02_parent 下的 bulid.gradle 文件中已有的内容了。

因此,
gradle_02_dao/build.gradle 内容为空;
gradle_02_service/build.gradle 内容如下:

image.png

gradle_02_web/build.gradle 内容如下:

image.png

------------ 代码 -----------------

gradle_02_web 模块的相关代码如下:
image.png image.png image.png image.png
gradle_02_service 模块相关代码如下:
image.png
gradle_02_dao 模块相关代码如下:
image.png

配置 Tomcat 服务器后,运行项目,如下:

image.png
上一篇下一篇

猜你喜欢

热点阅读