Gradle使用手册-基础篇

        现在市场上构建工具主要有三种:ant、maven、gradle。使用最多的可能就是maven,国外有些项目基于一些历史原因还是用ant来构建的。笔者接触的项目早期也是用ant来构建的,最近几年基本全换成maven了。

        但maven用久了之后也发现很多问题,比如纯xml配置不支持脚本语言,这在一些大型的项目比如一套源码多地部署时,需要根据场景来抽包(java工程)的情况下就显的有点力不从心了。另一个原因也是因为开发intellij plugin的需要,所以把Gradle使用方法挑重点记录一下,这些内容虽不能达到一个专业运维工程师的要求但对于一个RD同学基本是够用了。所以笔者计划分5部分阐述gradle工具的使用:

  1. 基础篇:从概念以及广度上介绍下gradle的核心内容,并构建一个简单的java项目;
  2. 进阶篇:详细讲解Gradle的配置相关内容;
  3. 高级篇:讲述一些高级内容,比如多项目构建、自定义task等;
  4. 实战篇:构建几类常见的java应用,这些代码可以做为模板方便日后使用;
  5. FAQ篇:提供一些常用的命令和问题供查询;

官方网站:

PS:在官网上会提供download、doc内容,另外gradle同maven一样其增强功能也是由各个插件提供的,所以也提供了一个类似插件市场的仓库。

一、Gradle是什么?

         Gradle 是一种开源构建自动化工具,可以构建几乎任何类型的语言(现支持60多种语言,并且还在持续增加中)。Gradle 对您要构建什么或如何构建它几乎没有任何假设,这使得 Gradle 特别灵活。Gradle 构建脚本可以使用 Groovy 或 Kotlin 编写,在深入了解 Gradle 的细节之前,了解以下术语会很有帮助。

        本系列专题所有与Gradle相关的代码全部采用Kotlin来编写,如果对此语言不太了解,也可以复制到Intellij idea软件中,通过工具栏菜单转换为java语言来查看。

1、术语

  • 项目:就是传统的项目或模块的概念,包含应用的代码和资源文件,也是Gradle 构建的对象。项目包含一个构建脚本,它是一个位于项目根目录中的文件。单次构建可以包含一个或多个项目,每个项目可以包含自己的子项目
  • 构建脚本:这是Gradle的配置文件,相当于maven的pom.xml文件,通常名为build.gradle或build.gradle.kts。构建脚本中可以定义任务、依赖项、插件以及其他配置。采用Koltlin编写的腰带的文件后缀名为.kts,采用Groovy语言编写的脚本的文件后缀名为.gradle
  • 任务:Gradle所有的工具全是通过任务方式来执行的,任务包含执行某些工作的逻辑——编译代码、运行测试或部署软件。在大多数项目中使用Gradle提供的内置任务就足够了。比如TestGradle 提供了实现许多常见构建系统需求的任务,任务本身包括:
    1. 动作:做某事的工作片段,例如复制文件或编译源代码
    2. 输入:操作使用或操作的值、文件和目录
    3. 输出:操作修改或生成的文件和目录
  • 插件:插件允许您将新概念引入到任务、文件和依赖配置之外的构建中。例如,大多数语言插件将源集的概念添加到构建中。使用插件,您可以编写一次任务并在多个构建中使用它。或者,您可以将常用配置(如日志记录、依赖项和版本管理)存储在一个位置,这可减少了构建脚本中的重复,大大提高易用性和效率。

        通常一个任务对应Gradle内置的一条命令或一组命令,但是也可以通过编程的方式定义自己的任务。

2、构建工具分类

        常见的构建工具主要有三种:Ant、Maven、Gradle。Ant现在使用的不是太多,至少在国内是这样。如果对Maven已经非常熟悉了,可能不太愿意使用gradle,感觉貌似没有必要。但是既然gradle出现了就说明有很多人对Maven还是有一定的意见。因此在这里我来总结一下gradle相比maven的优势。在实际使用效果来看,Gradle可以覆盖Maven的全部功能,但反之不然。

        下图来源于官网:

  •  速度:gradle使用构建缓存、守护进程等方式提高编译速度。结果就是gradle的编译速度要远超maven,平均编译速度比Maven快好几倍,而且项目越大,这个差距就越明显。
  • 灵活性:gradle要比Maven灵活太多,虽然有时候灵活并不是一件好事情。但是大部分情况下,灵活一点可以极大的方便我们。Maven死板的XML文件方式做起事情来非常麻烦。很多Maven项目都通过执行外部脚本的方式来完成一些需要灵活性的工作。而在gradle中配置文件就是构建脚本,构建脚本就是编程语言,完全可以自给自足,无需外部脚本。
  • 简洁性:gradle脚本的长度要远远短于maven配置文件的长度。虽然很多人都说XML维护起来不麻烦,但是我觉得,维护一个光是依赖就有几百行的XML文件,不见得就比gradle脚本简单。

        也许是因为我上面说的原因,也许有其他原因,不得不承认的一件事情就是gradle作为一个新兴的工具已经有了广泛的应用。spring等项目已经从Maven切换到了gradle。开发安卓程序也只支持gradle了。因此不管是否现在需要将项目从maven切换到gradle,但笔者认为至少学习gradle是一件必要的事情,也是一种趋势。

二、安装Gradle

        安装 Gradle 之前首先要确保我们已经在系统中安装了 JDK,并且JDK的版本最低在1.7。最新的Gradle版本需要JDK1.8及以上,详细可参考官方文档。如果是Java项目建议直接采用IDE方式安装,比如IntelliJ IDEA自带了Maven和Gradle两种构建工具。一般来讲Gradle有三种安装方式:

安装前一定要确定本地JDK的版本,下面是目前推荐的一个安装配置:

  • java-jdk建议版本:jdk1.8,(支持版本8~19)
  • kotlin建议版本:1.8.10;(1.3到1.8.10)

  • Gradle建议版本:8.1.1或8.0.2

  • Groovy不需要安装,Gradle自带了

1、二进制文件安装

        这种比方式就是传统的下载安装包安装、然后配置系统的环境变量。安装包可在官网上下载

,配置环境变量的方式如下:

//windows系统,在系统配置中找到环境变量选项,然后修改path配置,如下
Path = %path%;C:\Gradle\gradle-8.1.1\bin

//macos、linux系统,可直接使用export命令或修改.base_profile文件,如下
export PATH=$PATH:/opt/gradle/gradle-8.1.1/bin

2、包安装(只限于macos和linux系统)

        在上述两种系统中都有包安装管理器,如下:

// Macos系统,采用Homebrew安装
brew install gradle

// Linux系统,采用sdk安装
sdk install gradle

3、Gradle-Wrapper方式(推荐)

        可以称Gradle Wrapper为Gradle包装器,是将Gradle再次包装。让所有的Gradle构建方法在 Gradle 包装器的帮助下运行。目的是可以让我们不需要在本地电脑中安装 Gradle 环境也可以运行 Gradle 项目。官方建议任何 Gradle 构建方法都要在 Gradle Wrapper帮助下运行,利于多人协同开发时环境的统一,工作原理如下:

        这种安装方式以及详细使用方法在后面第三章节会详细讲解,因为如果不借助一些IDE的话还是需要先在本地安装后才能使用这种方式的。笔者后面会使用Intellij idea开发工具来进行演示。如果您没有此类工具,建议下载一个或是全程采用命令行的方式也可,纯命令行构建方式如下:

$ gradle init 
$ gradle wrapper --gradle-version=8.1.1 //值也可以指定latest

安装方式:强烈建议使用Gradlw-wrapper方式,因为方式1和2依赖本地环境,方式3依赖项目配置在多人开发时可以方便统一开发环境。但是这几种方式并不冲突,因为Gradlw-wrapper是依赖本地环境的。在执行构建时可以采用不同的.sh或.bat文件;

4、验证安装成功

        在命令行中输入gradlw -version命令,显示内容大概如下:

$ gradle -v

------------------------------------------------------------
Gradle 8.0
------------------------------------------------------------

Build time:   2023-02-13 13:15:21 UTC
Revision:     62ab9b7c7f884426cf79fbedcf07658b2dbe9e97

Kotlin:       1.8.10
Groovy:       3.0.13
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          1.8.0_144 (Oracle Corporation 25.144-b01)
OS:           Mac OS X 10.16 x86_64

三、使用Intellij idea创建一个Gradle工程

        在搭建项目时先创建一个empty project,然后再添加module这是一个比较好的实践,因为:1、可以把工程目录和实际的module源码分离方便本地管理;2、可按需要创建多个添加不同module的project方便开发。这样方便管理,好可以通过project共享配置,也可以不同的模块也有不同的环境配置方式。

示例环境:

OS:MacOS Monterey 12.6.5

idea版本:IntelliJ IDEA 2023.1.1 (Ultimate),不同idea版本截图略有差异

java-jdk:1.8

1、创建Empty Project

     

    

2、向Project中添加Module

        然后在项目管理中添加moudle,界面配置如下所示,注意一点的是除了项目名称和位置之外,其它所有红框的内容都可以后续更改

Idea创建模块时所有设置就一个界面,详细解释如下,与构建项目相关的关键信息已标红:

  • 语言:项目的开发语言,是什么项目就选什么语言即可;
  • 构建系统:必须选择 Gradle;
  • JDK:项目的JDK,并不是Gradle依赖的JDK,按项目要求选择相应的版本即可,后续可以在脚本中修改;
  • Gradle DSL:Gradle的构建脚本是可编程的,此处是指定Gradle的开发语言,但现在一般的项目都推荐使用Kotlin语言,注意,不同语言生成的构建文件类型不一样,Groovy生成的配置文件以.gradle结尾,选择Kotlin时配置文件以.gradle.kts结尾。
  • 父项:相当于maven构建时的parent父项目的意思,后续可以在脚本中修改;
  • Gradle分发:选择包装器Gradle Wrapper,后面会着重介绍;
  • Gradle版本:默认即可,后续可以在脚本中修改;
  • 组ID和工件ID:其实就是类似maven中的groupId和artifactId,后续可以在脚本中修改;

 3、Gradle工程结构详解

        经过上述两步操作,一个简单的单模块的Gradle就创建好了。后面创建多模块的工程时也会基于此工程来作调整。

         上述红框内的内容是Gradlw的相关内容:

  • gradle目录:就是上面提到的第三种安装方式;
  • build.gradle.kts:module构建脚本,在高级篇时会详细讲解;
  • settings.gradle.kts:project结构组织脚本,用于多模块管理使用以及属性定义,在高级篇时会详细讲解;

4、Module的Gradle配置

        在Intellij idea中还需要一步配置,否则有可能导致不能正确构建,打开IDEA的【首选项】,找到如下图所示的配置页面,按需修改红框内的内容即可:

  • Gradle用户主目录:个人习惯是每到一个新公司就设置一个专门的主目录;
  • 使用此工具构建和运行:建议改成 Intellij IDEA;
  • 使用此工具运行测试:建议改成 Intellij IDEA;
  • Gradle JVM:Gradle运行依赖的JDK环境,注意区分不要和项目的JDK弄混;

5、初始化Gradle-Wrapper执行脚本

        工程中虽然包含了Wrapper相关的目录但还没有初始化,所以还需要执行一次Wrapper任务,如下图所示:

         执行后,刷新一下项目文件目录,会发现多了1个文件夹和2个文件,注意:此处需要下载Gradle软件可能需要几分钟时间需要耐心等待一下:

  • .gradle:Gradle软件存放目录,这就是gradlw-wrapper安装方式;
  • gradlew:linux和macos系统下可执行的脚本,它代理了原生的gradle命令; 
  • gradlew.bat:windows系统下可执行的脚本,它代理了原生的gradle命令;

        待一切初始化完成后,我们就可以编码,然后按需要执行相关的gradle任务了,在Intellij idea软件中可以直接在可视化窗口中双击执行即可,就是下图中的窗口:

四、命令行执行Gradle命令

        在Intellij idea中除了可以在Gradle plugin的图形化界面中通过点击的方式执行Gradle命令,还有两种方式也可以操作。

1、执行Gradle-Wrapper命令

        上面提到过gradle-wrapper可以理解为一层gradle代理,同时也通过gradlew和gradlew.bat这两个脚本文件代理了所有的原生的gradle命令,执行方式如下:

        首先在终端窗口中切换到gradlew所在的目录下,然后使用./gradlew xxx方式来执行相关的操作,示例如下:

         从此处可以看出,在实际开发过程中并不需要安装gradle软件,通过相关的IDE然后采用gradle-wrapper方式即可。

        这种方式注意命令是 gradlew比原生的多了一个 w

2、执行Gradle原生命令

        如果在地系统中未安装gradle,也可以借助IDE执行原生的gradlw xxx命令,但需要借助相关的插件,如下图所示:

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

korgs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值