写点什么

Gradle 入门了解

作者:派大星
  • 2022-11-28
    辽宁
  • 本文字数:1868 字

    阅读完需:约 6 分钟

最近项目中使用到了 Gradle 所以就抓紧学习了一下。以下资料来自互联网,属于个人整理。图片如有侵权会删除

不同管理工具的区别

版本兼容问题

Gradle 存在版本兼容问题,不同的 IDEA 与 Gradle 存在版本问题,同样 Spring Boot 和 Gradle 也存在版本兼容问题。Idea 可以在安装目录下的 plugs 目录下查看当前版本的 idea 适配哪些 GradleMac 电脑的具体目录可以在 app 的显示包目录下查看,如图所示:


JDK 版本问题

要求 JDK 要求不能低于 1.8,具体可查看官方文档

目录结构

注意:gradlew 与 gradlew.bat 执行的指令是 wrapper 中的 gradle 指令,不是本地安装的 gradle 指令

常用指令


注意:gradle 命令要在含有 build.gradle 文件的目录下执行

修改 maven 下载源

因为 Gradle 的下载源是国外的,由于国内的原因访问速度很慢,所以我们需要修改一下下载源。可以在gradle目录下的inid.d目录下新增/修改以.gradle后缀结尾的文件,它可以实现在 build 之前执行,操作如图所示:



init.gradle文件内容如下:


// 针对所有功能allprojects {    // 项目所需要的jar包会从这里下载    repositories {        // maven的本地仓库 这里必须要配置环境变量 M2_HOME:maven本地长仓库路径        mavenLocal()        maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }         maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" }         // maven中央仓库        mavenCentral()    }    // build gradle 构建脚本使用,构架脚本本身需要的依赖    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/' }        }    }}
复制代码


Mac 的环境变量 M2_HOME 截图


init.gradle 的执行方式

  1. 使用命令行指定:**gradle --init-script yourdir/init.gradle -q taskName**

  2. 可以多次输入此命令来指定多个 init 文件



  1. 把 init.gradle 文件放到 USER_HOME/.gradle/ 目录下

  2. USER_HOME 就是当前用户目录下,也就是当前用户下的.gradle 目录下


如图:



  1. .gradle结尾的文件放到 USER_HOME/.gradle/init.d/ 目录下

  2. 把以.gradle 结尾的文件放到 GRADLE_HOME/init.d/ 目录下(也就是修改maven下载源的方式)

注意:

如果存在上面的 4 种方式的 2 种以上,gradle 会按上面的 1-4 序号依次执行这些文件,如果给定目录下存在多个 init 脚本,会按拼音 a-z 顺序执行这些脚本,每个 init 脚本都存在一个对应的 gradle 实例,你在这个文件中调用的所有方法和属性,都会委托给这个 gradle 实例,每个 init 脚本都实现了 Script 接口。仓库说明:


  • 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()。


Gradle Wrapper

  • Gradle Wrapper 实际上就是对 Gradle 的一层包装,用于解决实际开发中可能会遇到的不同的项目需要不同版本的 Gradle。


相关命令:


# 升级wrapper版本号,只是修改gradle.properties中wrapper版本,未实际下载gradle wrapper --gradle-version=7.4.4
# 下载指定版本的(7.4.4)会存储在GRADLE_USER_HOME目录下的wrapper/distgradlew classes
# 关联源码用gradle wrapper --gradle-version 5.2.1 --distribution-type all
复制代码

GradleWrapper 的执行流程:

  1. 当我们第一次执行 ./gradlew build 命令的时候,gradlew 会读取 gradle-wrapper.properties 文件的配置信息

  2. 准确的将指定版本的 gradle 下载并解压到指定的位置(GRADLE_USER_HOME 目录下的 wrapper/dists 目录中)

  3. 并构建本地缓存(GRADLE_USER_HOME 目录下的 caches 目录中),下载再使用相同版本的 gradle 就不用下载了 4.之后执行的 ./gradlew 所有命令都是使用指定的 gradle 版本。


如下图所示


gradle-wrapper.properties 文件解读


整理不易。欢迎点赞关注

微信搜索【码上遇见你】获取 Java 学习资料。获取更多精彩内容。

用户头像

派大星

关注

微信搜索【码上遇见你】,获取更多精彩内容 2021-12-13 加入

微信搜索【码上遇见你】,获取更多精彩内容

评论

发布
暂无评论
Gradle入门了解_Gradle_派大星_InfoQ写作社区