文章目录
- Gradle 入门
- Gradle 简介
- 学习Gradle 的原因:
- 常见的项目构建工具
- Gradle 安装
- Gradle 安装说明
- 安装JDK
- 下载并解压到指定目录
- 配置环境变量
- 检测是否安装成功`
- Gradle 项目目录结构
- Gradle 创建第一个项目
- Gradle 中的常用指令
- 修改maven 下载源
- Wrapper 包装器
- 使用教程
- 添加 Gradle 包装器
- 如何使用 Gradle 包装器
- 更新 Gradle 包装器
Gradle 入门
Gradle 简介
Gradle 是一款Google 推出的基于 JVM、通用灵活的项目构建工具,支持 Maven,JCenter 多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml 文件,转而使用简洁的、支持多种语言(例如:java、groovy 等)的 build 脚本文件。
学习Gradle 的原因:
- 目前已经有相当一部分公司在逐渐使用Gradle作为项目构建工具了。
- 作为Java开发程序员,如果想下载Spring、SpringBoot等Spring家族的源码,基本上基于Gradle构建的。
- 支持基于groovy语言编写脚本,侧重于构建过程的灵活性,适合于构建复杂度较高的项目。
- gradle相比服务端java,在Android上更为流行,主要也是Android上更侧重构建的复杂性和多样性
- 构建效率高,官方数据显示,Gradle比maven构建速度快2~10倍
常见的项目构建工具
-
Ant: 2000 年 Apache 推出的纯Java 编写构建工具,通过 xml[build.xml]文件管理项目优点:使用灵活,速度快(快于 gradle 和 maven),
缺点:Ant 没有强加任何编码约定的项目目录结构,开发人员需编写繁杂XML 文件构建指令,对开发人员是一个挑战。 -
Maven: 2004 年Apache 组织推出的再次使用xml 文件[pom.xml]管理项目的构建工具。
优点: 遵循一套约定大于配置的项目目录结构,使用统一的GAV 坐标进行依赖管理,侧重于包管理。缺点:项目构建过程僵化,配置文件编写不够灵活、不方便自定义组件,构建速度慢于 gradle。 -
Gradle: 2012 年Google 推出的基于Groovy 语言的全新项目构建工具,集合了Ant 和 Maven 各自的优势。
优点:集 Ant 脚本的灵活性+Maven 约定大于配置的项目目录优势,支持多种远程仓库和插件,侧重于大项目构建。缺点:学习成本高、资料少、脚本灵活、版本兼容性差等。
Gradle 安装
Gradle 安装说明
SpringBoot 官方文档明确指出,目前SpringBoot 的 Gradle 插件需要gradle6.8 版本及以上.
其中SpringBoot 与Gradle 存在版本兼容问题,Gradle 与Idea 也存在兼容问题,所以考虑到 java 程序员会使用SpringBoot,所以要选择 6.8 版本及高于 6.8 版本的Gradle,那么相应的idea 版本也要升级,不能太老哦。
安装JDK
要求Jdk 为 1.8 或者 1.8 版本以上。
下载并解压到指定目录
下载
● 解压到指定目录: D:\software\gradle-8.4
配置环境变量
在win10及更高版本中,一般按下win+s搜索环境变量即可快速找到设置
特别注意:这里我们接着再配置一个GRADLE_USER_HOME 环境变量:
GRADLE_USER_HOME 相当于配置Gradle 本地仓库位置和 Gradle Wrapper 缓存目录。
提示:
Gradle本地仓库可以和Maven本地仓库目录一致
检测是否安装成功`
gradle -v 或者 gradle --version: 通过gradle -v或者 gradle --version检测是否安装成功
Gradle 安装成功的提示文本
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:
- 只有war工程才有webapp目录,对于普通的jar工程并没有webapp目录
- 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文件
- 把以.gradle结尾的文件放到 USER_HOME/.gradle/init.d/ 目录下
- 把以.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
问题。例如:把自己的代码共享给其他人使用,可能出现如下情况:
- 对方电脑没有安装 gradle
- 对方电脑安装过 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 目录
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。