Gradle简介


Gradle 是一款 Google 推出的基于JVM、通用灵活的_项目构建工具_,支持 MavenJCenter 多种第三方仓库,支持传递性依赖、废弃了繁杂的 xml 文件,转而使用简洁的、支持多种语言(如:Java、groovy等)build脚本文件
官网地址:gradle官网

为什么学习Gradle?

  1. 构建速度更快
  2. 更现代

常用构建工具


自动构建工具对比AntMavenGradle
构建性能最高最低居中
仓库开发者自己处理maven仓库支持多种远程仓库
依赖管理ivy管理GAV坐标管理GNV坐标管理
插件支持实现方便实现较难实现发变组
遵循特定目录结构NO遵循同maven
配置文件xml文件最为繁琐xml文件代码脚本,便于编写业务逻辑
侧重点小型项目构建项目包管理大型项目构建
目前地位使用较少目前主流未来趋势

Gradle安装


1. 安装JDK

JDK至少位1.8及以上

2. 下载Gradle并配置环境变量

环境变量配置:

验证

C:\Users\zxb>gradle -v

Welcome to Gradle 8.13!

Here are the highlights of this release:
 - Daemon JVM auto-provisioning
 - Enhancements for Scala plugin and JUnit testing
 - Improvements for build authors and plugin developers

For more details see https://docs.gradle.org/8.13/release-notes.html


------------------------------------------------------------
Gradle 8.13
------------------------------------------------------------

Build time:    2025-02-25 09:22:14 UTC
Revision:      073314332697ba45c16c0a0ce1891fa6794179ff

Kotlin:        2.0.21
Groovy:        3.0.22
Ant:           Apache Ant(TM) version 1.10.15 compiled on August 25 2024
Launcher JVM:  23.0.1 (Oracle Corporation 23.0.1+11-39)
Daemon JVM:    F:\env\Java\openjdk-23.0.1 (no JDK specified, using current Java home)
OS:            Windows 10 10.0 amd64

Gradle中的常用命令


常用命令说明:

常用gradle指令作用`
gradle clean清空build目录
gradle classes编译业务代码和配置文件
gradle test编译测试代码,生成测试报告
gradle build构建项目
gradle build -x test跳过测试构建

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

修改maven下载源


Gradle自带的 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. 把init.gradle文件放到 USER_HOME/.gradle 目录下
  3. 把以.gradle结尾的问价放到 USER_HOME/.gradle/init.d/ 目录下
  4. 把以.gradle结尾的文件放到 GRADLE_HOME/init.d/ 目录下

以上方法均可,gradle会安装1-4的顺序执行这些脚本。

拓展2:仓库地址说明

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

gradle可以通过指定仓库地址为本地maven仓库地址和远程仓库地址相结合的方式,避免每次都从远程仓库下载依赖库。

但是这种方式也有一定问题,如果本地maven仓库中有这个依赖,就会直接加载本地依赖,如果本地仓库没有该依赖,那么还是会从远程下载。但是下载的jar不是层次在本地maven仓库中,而是放在自己的缓存文件中,默认在 USER_HOME/.gradle/caches

访问顺序图如下:

当然,你也可以通过配置 GRADLE_USER_HOME 环境变量,则会放在 GRADLE_USER_HOME/caches 目录。但是这样是无法将 gradle caches指向 maven repository。