问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Gradle入门指南:安装配置与项目构建

创作时间:
作者:
@小白创作中心

Gradle入门指南:安装配置与项目构建

引用
1
来源
1.
https://zeeklog.com/gradle-bi-ji-yi-gradle-de-an-zhuang-yu-ru-men/

Gradle是一款由Google推出的基于JVM的项目构建工具,它结合了Ant的灵活性和Maven的约定性,支持多种语言的构建脚本。本文将详细介绍Gradle的安装、配置以及基本使用方法,帮助读者快速入门Gradle。

Gradle简介

Gradle是一款由Google推出的基于JVM的项目构建工具,它支持Maven、JCenter等多种第三方仓库,能够进行传递性依赖管理。与传统的XML配置方式不同,Gradle使用简洁的、支持多种语言(如Java、Groovy等)的构建脚本文件。

学习Gradle的原因:

  1. 目前已经有相当一部分公司在逐渐使用Gradle作为项目构建工具。
  2. 作为Java开发程序员,如果想下载Spring、SpringBoot等Spring家族的源码,基本上都是基于Gradle构建的。
  3. 支持基于Groovy语言编写脚本,侧重于构建过程的灵活性,适合于构建复杂度较高的项目。
  4. 在Android开发中更为流行,主要也是因为Android开发更侧重构建的复杂性和多样性。
  5. 构建效率高,官方数据显示,Gradle比Maven构建速度快2~10倍。

常见的项目构建工具

  • Ant:2000年Apache推出的纯Java编写构建工具,通过build.xml文件管理项目。优点是使用灵活,速度快(快于Gradle和Maven)。缺点是Ant没有强加任何编码约定的项目目录结构,开发人员需编写繁杂的XML文件构建指令,对开发人员是一个挑战。

  • Maven:2004年Apache组织推出的再次使用xml文件[pom.xml]管理项目的构建工具。优点是遵循一套约定大于配置的项目目录结构,使用统一的GAV坐标进行依赖管理,侧重于包管理。缺点是项目构建过程僵化,配置文件编写不够灵活、不方便自定义组件,构建速度慢于Gradle。

  • Gradle:2012年Google推出的基于Groovy语言的全新项目构建工具,集合了Ant和Maven各自的优点。优点是集Ant脚本的灵活性+Maven约定大于配置的项目目录优势,支持多种远程仓库和插件,侧重于大项目构建。缺点是学习成本高、资料少、脚本灵活、版本兼容性差等。

Gradle安装

安装说明

SpringBoot官方文档明确指出,目前SpringBoot的Gradle插件需要Gradle6.8版本及以上。考虑到Java程序员会使用SpringBoot,建议选择6.8版本及高于6.8版本的Gradle。相应的IDEA版本也要升级,不能太老。

安装JDK

要求JDK为1.8或者1.8版本以上。

下载并解压到指定目录

下载Gradle并解压到指定目录,例如:D:\software\gradle-8.4

配置环境变量

在Windows系统中,可以通过搜索“环境变量”快速找到设置入口。特别注意需要配置GRADLE_USER_HOME环境变量,它相当于配置Gradle本地仓库位置和Gradle Wrapper缓存目录。

提示:Gradle本地仓库可以和Maven本地仓库目录一致。

检测是否安装成功

可以通过以下命令检测Gradle是否安装成功:

gradle -v 或者 gradle --version

安装成功的提示文本示例如下:

C:\Users\29071>gradle -v
------------------------------------------------------------
Gradle 8.4
------------------------------------------------------------
Build time:   2023-10-04 20:52:13 UTC
Revision:     e9251e572c9bd1d01e503a0dfdf43aedaeecdc3f
Kotlin:       1.9.10
Groovy:       3.0.17
Ant:          Apache Ant(TM) version 1.10.13 compiled on January 4 2023
JVM:          21 (Oracle Corporation 21+35-LTS-2513)
OS:           Windows 11 10.0 amd64

Gradle项目目录结构

Gradle项目默认目录结构和Maven项目的目录结构一致,都是基于约定大于配置的原则。其完整项目目录结构如下:

Tips

  1. 只有war工程才有webapp目录,对于普通的jar工程并没有webapp目录。
  2. gradlew与gradlew.bat执行的是指定wrapper版本中的gradle指令,不是本地安装的gradle指令。

Gradle创建第一个项目

借助于Spring脚手架创建Gradle第一个项目:https://start.spring.io/

查看生成的Gradle项目目录结构如下所示:

与上图对比会发现:总体的目录结构与上图说明的是一致的。

Gradle中的常用指令

Gradle常用命令说明:

需要注意的是:Gradle的指令要在含有build.gradle的目录执行。

修改Maven下载源

Gradle自带的Maven源地址是国外的,该Maven源在国内的访问速度是很慢的,除非使用了特别的手段。一般情况下,我们建议使用国内的第三方开放的Maven源或企业内部自建Maven源。

认识init.d文件夹

我们可以在Gradle的init.d目录下创建以.gradle结尾的文件,.gradle文件可以实现在build开始之前执行,所以你可以在这个文件配置一些你想预先加载的操作。

在init.d文件夹创建init.gradle文件

allprojects {
    repositories {
        mavenLocal()
        maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
        maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" }
        mavenCentral()
    }

    buildscript {
        repositories {
            maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
            maven { name "Bstek" ; url 'https://nexus.bsdn.org/content/groups/public/' }
            maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
        }
    }
}

拓展1:启用init.gradle文件的方法有:

  1. 在命令行指定文件,例如:gradle --init-script yourdir/init.gradle -q taskName。你可以多次输入此命令来指定多个init文件
  2. 把以.gradle结尾的文件放到USER_HOME/.gradle/init.d/目录下
  3. 把以.gradle结尾的文件放到GRADLE_HOME/init.d/目录下

拓展2:仓库地址说明

  • mavenLocal():指定使用maven本地仓库,而本地仓库在配置maven时settings文件指定的仓库位置。如E:/repository,gradle查找jar包顺序如下:USER_HOME/.m2/settings.xml >> M2_HOME/conf/settings.xml >> USER_HOME/.m2/repository
  • maven { url 地址}:指定maven仓库,一般用私有仓库地址或其它的第三方库【比如阿里镜像仓库地址】。
  • mavenCentral():这是Maven的中央仓库,无需配置,直接声明就可以使用。
  • jcenter():JCenter中央仓库,实际也是用的maven搭建的,但相比Maven仓库更友好,通过CDN分发,并且支持https访问,在新版本中已经废弃了,替换为了mavenCentral()。

拓展3:阿里云仓库地址请参考:https://developer.aliyun.com/mvn/guide

Wrapper包装器

Gradle Wrapper实际上是对Gradle的一层包装,用于解决实际开发中可能会遇到的不同的项目需要不同版本的Gradle问题。例如:把自己的代码共享给其他人使用,可能出现如下情况:

  1. 对方电脑没有安装gradle
  2. 对方电脑安装过gradle,但是版本太旧了

这时候,我们就可以考虑使用Gradle Wrapper了。这也是官方建议使用Gradle Wrapper的原因。实际上有了Gradle Wrapper之后,我们本地是可以不配置Gradle的,下载Gradle项目后,使用Gradle项目自带的wrapper操作也是可以的。

使用教程

我们将使用第一个Gradle包装器执行以下操作:

  • 设置一个新的Gradle项目并为其添加一个包装器。
  • 使用现有包装器运行项目。
  • 将包装器升级到最新版本的Gradle。

添加Gradle包装器

Gradle带有一个称为包装器的内置任务。执行此任务时,它会在项目中生成必要的包装文件。要将包装器添加到项目中,请在项目的根目录下运行包装器命令,如下所示:

gradle wrapper

gradle wrapper执行结果:

D:\ProjectJava\demo>gradle wrapper
Starting a Gradle Daemon, 1 incompatible and 1 stopped Daemons could not be reused, use --status for details
BUILD SUCCESSFUL in 21s
1 actionable task: 1 executed
D:\ProjectJava\demo>

上面的命令将为我们的项目提供包装器,并将包装器属性文件生成到目录gradle/wrapper/gradle-wrapper.properties。

gradle-wrapper属性文件内容如下:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

此文件包含有关Gradle发布版本的以下信息:

  • 托管Gradle发行版的服务器。
  • Gradle发行版的类型,默认情况下,它是bin发行版,仅包含运行时,但不包含示例代码和文档。
  • Gradle版本用于执行构建。默认情况下,包装器任务选择机器的已安装版本。

注意:如果我们想将包装文件共享给其他开发人员和执行环境,那么我们必须将它们推送到版本控制中。

上述所有方面都可以在包装文件生成期间借助命令行进行配置。

以下命令用于指定用于下载和执行包装器的Gradle版本:

--gradle-version

下面的命令用于指定用于包装器的Gradle分发类型。可用选项为bin和all,默认值为‘bin’:

--distribution-type

以下命令用于将完整URL指向Gradle分发zip文件:

--gradle-distribution-url

考虑以下示例来解释命令行选项的使用。我们希望使用7.5版本创建包装器,并使用-all分发版来启用我们的IDE来启用代码完成并能够导航到Gradle源代码。以下命令可以满足这些要求:

$ gradle wrapper --gradle-version 8.4 --distribution-type all

上面的命令将创建一个8.4版本的包装器。

如何使用Gradle包装器

建议使用包装器执行项目的构建,以确保构建的标准、可控和可靠执行。Wrapper执行构建,几乎就像使用Gradle安装执行构建一样。根据我们的操作系统,我们可以运行gradlew或gradlew.bat命令而不是gradle命令。以下命令演示了如何在Windows机器上为基于Java的项目使用包装器:

gradlew build

如果机器上没有Gradle发行版,包装器将下载并提供给我们,并将其存储在本地文件系统中。文件存储在项目根目录下的.gradle文件下。后续构建调用将重用现有的本地分发,因为Gradle属性中的分发URL不会更改。

更新Gradle包装器

软件需要更新以使其与最新版本保持连接,从而受益于新功能和改进。我们还可以通过更改包装器属性文件中的分发URL属性来手动升级Gradle版本。但是,建议通过wrapper任务升级wrapper版本,通过指定的Gradle版本。包装器任务确保对包装器shell脚本所做的任何优化都应用于项目,尽管我们必须将这些对包装器文件的更改提交给版本控制。

gradle包装器任务用于生成指定版本的包装器。默认情况下,它会考虑安装的版本。

要将Gradle包装器升级到指定版本,请运行以下命令:

$ gradlew wrapper --gradle-version8.4

上述命令会将项目升级到Gradle版本8,4。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号