Gradle从0入门到实战系列【一】Hello World Gradle

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 早期没有项目管理工具时,对于项目所依赖的第三方包采用的是:拷贝三方jar包到本地,然后加入到lib目录下,这样做劣势不言而喻,管理复杂容易冲突。Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。面向Java应用为主。
关注我,这里有你意想不到的惊喜
Gradle从0入门到实战系列【一】Hello World Gradle
Gradle从0入门到实战系列【二】Groovy And Gradle
Gradle从0入门到实战系列【三】build.gradle之Project
Gradle从0入门到实战系列【四】build.gradle之Task
Gradle从0入门到实战系列【五】工程化之插件
Gradle从0入门到实战系列【六】生命周期剖析
Gradle从0入门到实战系列【七】一个简单完整的build.gradle
Gradle从0入门到实战系列【八】SpringBoot集成Junit单元测试
Gradle从0入门到实战系列【九】仓库与私服
Gradle从0入门到实战系列【十】集成Dockerfile构建Docker镜像

认识Gradle

Gradle是一种开源自动化构建工具,支持多语言环境,受Ant、Maven思想的影响,集二者之大成,相比Ant的不规范,Maven的配置复杂、生命周期限制较多,Gradle既规范也更灵活,可以使用DSL(领域特定语言,如Groovy)编写构建,脚本更加精悍。本系列基于Gradle7讲解。

  • Ant:2000年发布,纯java编写,几乎很少使用纯Ant进行项目的管理和构建。
  • Maven:2004年发布,采用pom.xml管理项目,目前最火热的Java项目管理工具。
  • Gradle:2012年发布,google背书、Android项目开发主流构建工具,Spring项目源码采用该工具构建。

我们为什么要学Gradle?他有哪些优势

  • 优势:

    • 灵活性:相对于 Maven、Ant 等构建工具,Gradle 提供了一系列的 API 让我们有能力去修改或定制项目的构建过程。
    • 粒度性:源码的编译,资源的编译,都是一个一个Task的,我们可以修改task来达到精细控制上。
    • 扩展性:Gradle 支持插件机制,所以我们可以复用这些插件,就如同复用库一样简单方便。
    • 兼容性:Gradle 不仅自身功能强大,而且它还能兼容所有的Maven、Ant功能,也就是说,Gradle 吸取了所有构建工具的长处。
    • 众多大厂开源代码开始由Maven转向了Gradle管理,这已经是趋势
  • 劣势:

    • 每一个版本都较上一次有非常大的改动,没有做较好向上兼容
    • 学习成本高,需要学习groovy脚本语言
    • 经常遇到一些莫名其妙的问题,会有一些踩坑成本

项目管理专业术语

  • 构建(build):Gradle和Maven一样,提供了构建相关的Task,而构建是一种抽象概念,我们能执行的如install、build、clean、package等都称为构建,现阶段你可以通俗理解构建就是打包。
  • 仓库(repository):存放jar包的仓库,我们常使用到的第三方jar包,如spring-aop-5.3.jar、hibernate-3.x.jar、mybatis-3.5.jar都存放在中央仓库中,仓库的详细知识在后面的文章中会给大家详细讲解。
  • 坐标(GAV):我们曾学过x坐标、y坐标以及生活中的经纬度,他们都是用来定位的,所以在Gradle和Maven中也需要有坐标的概念,用来拉取中央仓库中的某一个具体的jar包。

    • groupId:组织或机构的域名倒写,如com.taobao、org.springframework
    • artifactId:第三方jar包名称
    • version:版本号
    • 示例Maven

      <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-aop</artifactId>
       <version>5.3.8</version>
      </dependency>
      
    • 示例Gradle

       dependencies {
         implementation 'org.springframework:spring-aop:5.3.23'
       }

Gradle组成

image.png

Groovy

Groovy 是一种基于 JVM 的动态语言,他的语法和 Java 相似,最终也是要编译 .class 在JVM上运行。Groovy 完全兼容 Java 并且在此基础上添加了很多动态类型和灵活的特性,比如支持闭包,支持DSL(领域特定语言),是一门非常灵活的动态脚本语言。

要执行Groovy的脚本必须要安装Groovy环境,或者使用Java的ClassLoader来调用,大家初次学习Groovy不需要安装环境,可以寻找在线的云编译环境运行。第二篇文章会进行详细的语法讲解。

build script block

构建脚本快由Groovy语法组成,是由Gradle内置+插件提供的一些闭包,后面内容会详细给大家剖析

  • buildscript{}
  • configurations{}
  • repositories{}
  • dependencies{}
  • allprojects{}
  • subprojects{}
  • sourceSets{}
  • artifacts{}
  • publishing{}

gradle api

  • 内置属性:如project、version、group、parent
  • 内置方法:property、copy、apply、afterEvaluate等

安装Gradle

因为gradle不同版本兼容性较差,在实际工作中,我们一般不会直接下载安装,而是采用idea+wrapper的形式来进行编译和使用,这里学习使用安装一次。

  • 环境:windows、java8,戳我Gradle官网进行下载,下载后解压到本地
  • binary-only版本(-bin后缀):只有可执行文件
  • complete版本(-all后缀):除了可执行文件还包含Gradle的源码和源码文档说明

image.png

下载后解压,配置环境变量

  • 新建GRADLE_HOME环境变量,将gradle根目录配置
  • 在path中加入项%GRADLE_HOME%\bin,类似于JDK或Maven的配置
  • 打开CMD,执行gradle -v,成功输出版本则表示安装配置完成

image.png
image.png
Mac平台下推荐使用Homebrew包管理器自动安装,输入brew install gradle默认会下载binary-only版本


C:\Users\Ron>gradle -v

Welcome to Gradle 7.4.1!
------------------------------------------------------------
Gradle 7.4.1
------------------------------------------------------------

Build time:   2022-03-09 15:04:47 UTC
Revision:     36dc52588e09b4b72f2010bc07599e0ee0434e2e

Kotlin:       1.5.31
Groovy:       3.0.9
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          1.8.0_131 (Oracle Corporation 25.131-b11)
OS:           Windows 10 10.0 amd64

用Gradle说Hello World

  1. 新建build.gradle文件(名字不能为其他否则无法执行)
  2. 在其内部输入

    task say{
        println "hello world"
    }
  3. 在cmd环境下执行gradle -q say回车查看结果
  4. 参数解析

    -q :输出QUIET级别及其之上的日志信息,只显示错误日志
    -i :输出INFO级别及其之上的日志信息
    -d :输出DEBUG级别及其之上的日志信息

每一个task都是org.gradle.api.DefaultTask类型,在构建脚本中我们可以直接使用属性名使用该类中的相关属性,在底层Groovy会为你调用相关的gettersetter方法去访问这些属性,这里我们简单使用doFirstdoLast方法试试,后续会对task做详细的讲解。

task say{
    println "hello world"
    doFirst{
        println "ready"
    }
    doLast{
        println "thanks"
    }
}

总结

本篇就到这里了,带大家认识和学习了gradle的基础,用好gradle的前提是我们需要掌握Groovy基础语法,下一篇我们来学习Groovy,有疑问可以在评论区留言讨论

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
7月前
|
XML Java 测试技术
Gradle安装部署与基础入门详解
Gradle安装部署与基础入门详解
802 0
|
Java 测试技术 Spring
Gradle从0入门到实战系列【八】SpringBoot集成Junit单元测试
JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。
1674 1
Gradle从0入门到实战系列【八】SpringBoot集成Junit单元测试
|
7月前
|
XML 缓存 Java
Gradle 构建自动化工具入门
Gradle 构建自动化工具入门
|
XML Java Apache
Gradle极简入门
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,而不是传统的XML。Gradle构建脚本是用Groovy编写的,也可以使用Kotlin编写,两者都是基于JVM的语言。
347 0
|
Java 编译器 API
Gradle筑基篇(五)-Gradle自定义插件实战
前面几篇文章笔者对Gradle的一些基础认知,groovy基础语法,以及Gradle 项目中常用的一些api进行了讲解。今天笔者再来讲解一些关于`Gradle插件`的使用
|
XML 存储 缓存
|
弹性计算 Java jenkins
Gradle从0入门到实战系列【十】集成Dockerfile构建Docker镜像
在工作中,我们会将SpringBoot程序打包成Docker镜像,这就需要在Gradle中配置Dockerfile构建程序,并且能将打包后的镜像部署并启动为一个容器,Gradle的插件能够帮我们完成这件事
1243 0
Gradle从0入门到实战系列【十】集成Dockerfile构建Docker镜像
|
缓存 Java Linux
Gradle从0入门到实战系列【九】仓库与私服
Gradle沿用了Maven仓库,在使用仓库时能够很友好的基于Maven仓库提供功能,但Gradle所产生的构建并不会提供给Maven仓库,因为Gradle自己拷贝了一份Maven本地仓库缓存到了自己仓库目录下。
1256 0
Gradle从0入门到实战系列【九】仓库与私服
|
人工智能 移动开发 Java
Android Studio插件版本与Gradle 版本对应关系
Android Studio插件版本与Gradle 版本对应关系
2576 0
Android Studio插件版本与Gradle 版本对应关系