美文网首页
Gradle入门

Gradle入门

作者: N8_xEnn7nA1 | 来源:发表于2019-06-02 00:03 被阅读0次

    前言

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

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

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

    安装配置

    下面以 MacOS 环境为例。

    • 通过 Homebrew 安装 gradle
    image.png image.png
    • 在 IDEA 中配置 gradle
    image.png

    gradle 项目目录结构

    • src/main/java
      放置正式代码

    • src/main/resources
      放置正式配置文件

    • src/test/java
      放置单元测试代码

    • src/test/resources
      放置测试配置文件

    • src/main/webapp
      放置页面元素,比如 js、css、img、jsp、 html 等.

    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 配置文件的介绍

    • build.gradle
    image.png

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

    image.png

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

    • 让 gradle 使用本地 maven 仓库

    如上面 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 工程

    • 1.新建一个 gradle 工程
    • 2.在此基础上,在 src/main 目录下添加 webapp 目录
    • 3.然后配置 build.gradle 文件,添加 apply plugin: 'war' ,如下
    image.png

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

    image.png
    • 4.添加项目所需的 jar 包,在 build.gradle 文件中配置:
    image.png
    • 5.创建一个类 me.falcon.controller.HelloController
    image.png
    • 6.创建一个资源配置文件 springmvc.xml
    image.png
    • 7.在 webapp 目录下,新建 index.jsp 作为首页
    image.png
    • 8.在 webapp 目录下,新建 WEB-INF/web.xml
    image.png
    • 9.在 webapp 目录下,新建 WEB-INF/pages/list.jsp
    image.png
    • 10.配置 Tomcat 服务器
    image.png image.png image.png image.png image.png image.png
    • 11.运行项目
    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 模块的相关代码如下:
    • UserController.java
    image.png
    • springmvc.xml
    image.png
    • index.jsp
    image.png
    • list.jsp
    image.png
    gradle_02_service 模块相关代码如下:
    • UserServiceImpl.java
    image.png
    gradle_02_dao 模块相关代码如下:
    • UserDaoImpl.java
    image.png

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

    image.png

    相关文章

      网友评论

          本文标题:Gradle入门

          本文链接:https://www.haomeiwen.com/subject/aalatctx.html