1 、Gradle入门

Gradle入门

  • 1 、Gradle入门
  • 1. 1 、Gradle简介
  • 1. 2 、常见的项目构建工具
  • 1. 3 、Gradle安装
  • 1. 3. 1 、Gradle安装说明
  • 1. 3. 2 、安装JDK
  • 1. 3. 4 、配置环境变量
  • 1. 3. 5 、检测是否安装成功
  • 1. 4 、Gradle项目目录结构
  • 1. 5 、Gradle创建第一个项目
  • 扩展:命令创建项目
  • 1. 5. 1 、Gradle中的常用指令
  • 1.5.2、修改maven 下载源
  • 1. 5. 3 、Wrapper包装器

整套文章地址
1.Gradle 入门
2.Gradle 与Idea整合
3.Gradle 进阶说明

1. 1 、Gradle简介

Gradle是一款Google推出的 基于JVM、 通用灵活的 项目构建工具, 支持Maven,JCenter多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml文件,转而使用 简洁的 、 支持多种语言 (例如:java、groovy等)的 build脚本文件 。

官网地址:https://gradle.org/

学习Gradle的原因:

  1. 目前已经有相当一部分公司在逐渐使用Gradle作为项目构建工具了。
  2. 作为Java开发程序员,如果想下载Spring、SpringBoot等Spring家族的源码,基本上基于Gradle构建的

总之,虽然目前市面上常见的项目构建工具有Ant、Maven、Gradle,主流还是Maven,但是未来趋势Gradle 。

1. 2 、常见的项目构建工具

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作为项目构建工具了。
作为Java开发程序员,如果想下载Spring、SpringBoot等Spring家族的源码,基本上基于Gradle构建的。

Whatever:无论哪种项目构建工具,都有自身的优势和劣势,所以选择一款最适合自己的就是最好的。

1. 3 、Gradle安装

1. 3. 1 、Gradle安装说明

Gradle官网:https://gradle.org/
Gradle官方下载安装教程页面:https://gradle.org/install/
Gradle官方用户手册:https://docs.gradle.org/current/userguide/userguide.html

SpringBoot官方文档明确指出,目前SpringBoot的Gradle插件需要gradle 6. 8 版本及以上,所以我们这里选择 7 .x版本。

其中SpringBoot与Gradle存在版本兼容问题,Gradle与Idea也存在兼容问题,所以考虑到java程序员会使SpringBoot,所以要选择 6. 8 版本及高于 6. 8 版本的Gradle,那么相应的idea版本也要升级,不能太老哦。

查看本地idea 对应版本;尽量保持统一;现在推荐6.8以上;

具体参考文档: https://docs.spring.io/spring-boot/docs/ 2. 5. 0 /gradle-plugin/reference/htmlsingle/#getting-started

1. 3. 2 、安装JDK

https://gradle.org/install/

要求Jdk为 1. 8 或者 1. 8 版本以上。

  1. 3 、下载并解压到指定目录
    下载

解压到指定目录: D:\software\gradle- 7. 4. 1 (目录随意安装)

发布页面

可查看和安装其他版本;



1. 3. 4 、配置环境变量


GRALE_HOME

配置path的bin目录:


GRALE_USER_HOME 名字固定切勿修改,此处和maven 仓库是一个地址;(根据自己本地情况而定)

特别注意:这里我们接着再配置一GRALE_USER_HOME环境变量:GRALE_USER_HOME相当于配置Gradle本地仓库位置和GradleWrapper缓存目录。

Gradle本地仓库可以和Maven本地仓库目录一致

1. 3. 5 、检测是否安装成功

gradle -v


查看是否安装成;

1. 4 、Gradle项目目录结构

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

重点关注:build.gradle settings.build

Tips:

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

1. 5 、Gradle创建第一个项目

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

也可以自己在idea中创建查看生成的gradle项目目录结构如下所示:
解压后目录:

保留下面的即可;

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

扩展:命令创建项目

新建一个空的文件夹

cmd进入命令界面:


目录结构:

1. 5. 1 、Gradle中的常用指令

Gradle常用命令说明:

需要注意的是:gradle的指令要在含有build.gradle的目录执行 。
在此页面进行cmd操作上面的命令

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

1.5.2、修改maven 下载源

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

认识init.d文件夹

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

allprojects :针对所有的功能
repositories :下载项目指定jar包
buildscript:构建脚本使用

按照顺序去下载:

mavenLocal 配置下面到maven 本地仓库需要配置M2
M2_HOME

在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/ 目录下

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

2.3位置

拓展 2 :仓库地址说明

mavenLocal():
指定使用maven本地仓库,而本地仓库在配置maven时settings文件指定的仓库位置。如E:/repository,gradle
查找jar包顺序如下:USER_HOME/.m2/settings.xml >>
M2_HOME/conf/settings.xml >>
USER_HOME/.m2/repository

M2_HOME在环境变量中指定了maven仓库的地址

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。我们说这是不行的,caches下载文件不是按照maven仓库中存放的方式。

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

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"M 2 ";url'https://plugins.gradle.org/m 2 /'}
}
}
}


在gradle 中的使用说明:

1. 5. 3 、Wrapper包装器

视频地址

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

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

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

那如何使用GradleWrapper呢?

项目中的gradlew、gradlew.cmd脚本用的就是wrapper中规定的gradle版本。参见源码
而我们上面提到的gradle指令用的是本地gradle,所以gradle指令和gradlew指令所使用的gradle版本 有可能是不一样的 。
gradlew、gradlew.cmd的使用方式与gradle使用方式完全一致,只不过把gradle指令换成了gradlew指令。

当然,我们也可在终端执行 gradlew 指令时,指定指定一些参数,来控制 Wrapper 的生成,比如依赖的版本等,如下:

具体操作如下所示 :
gradle wrapper --gradle-version=7.6
升级wrapper版本号,只是修改gradle.properties中wrapper版本
未实际下载
gradle wrapper --gradle-version 5.2.1 --distribution-type all :关联源码用

执行他的时候才会去下载

扩展
此处报错是我的本地环境变量指定的gradle 版本是3.3 插件要求必须是6.8已上才行(3.3版本我这边项目太老我安装的可能比较老)大家正常下载最新的即可

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 文件解读:

对应:

注意:前面提到的 GRALE_USER_HOME 环境变量用于这里的Gradle Wrapper 下载的特定版本的gradle
存储目录。如果我们没有配置过GRALE_USER_HOME 环境变量,默认在当前用户家目录下的.gradle 文件夹中。

那什么时候选择使用 gradle wrapper、什么时候选择使用本地gradle?

下载别人的项目或者使用操作以前自己写的不同版本的gradle项目时:用Gradle wrapper,也即:gradlew
什么时候使用本地gradle?新建一个项目时: 使用gradle指令即可

Gradle 学习 ----Gradle 入门相关推荐

  1. Gradle 学习 ----Gradle 进阶说明

    Gradle 进阶说明 3 .Gradle进阶说明 3. 1 .项目的生命周期 3. 2 .settings文件 3. 3 .Task 3. 3. 1 .任务入门 3. 3. 2 .任务的行为 3. ...

  2. Android Gradle学习(一)

    文章目录 一.Gradle及Groovy简介 1.Gradle及自动化构建 (1)Gradle介绍 (2)为什么要学习Gradle (3)关于项目构建 (4)安卓自动化构建发展史 (5)Gradle提 ...

  3. Android Gradle 学习笔记(四):Gradle 构建脚本

    本节我们从整体的角度来介绍一下Gradle. 一.setting.gradle 在Gradle中,定义了一个设置文件,用于初始化以及工程树的配置.设置文件的默认的名字就是setting.gradle, ...

  4. Gradle学习目录

    Gradle学习目录 groovy学习(一) 开始使用gradle(二) gradle与project(三) Gradle属性(四) task详解(五) Gradle增量编译(六) gradle挂接到 ...

  5. android studio gradle 学习,学习Android Studio里的Gradle

    一直听说Gradle很强大,只是偶尔用Android Studio创建Demo的时候看到他一次,今天抽个时间完整记录一下. 1.gradle位置 Android Studio项目创建好之后,默认有3个 ...

  6. Gradle学习总结——抓重点学Gradle

    前言 网上关于Gradle的教程很多,但很多都是以"面"切入- 通过大量讲解其用法及其API分类来阐述.但Gradle API使用技巧众多,API更是成千上百,臣妾记不住呀.个人深 ...

  7. Gradle学习之Android-DSL AppExtension篇

    前言:上一篇文章已经讲解了Gradle的语法篇,接下来我们要开始学习android-gradle-dsl了,不过我上一篇漏写了一节函数,这个我打算接下来补上,俗话说的好墨刀不误砍柴工,上一篇文章我们的 ...

  8. Gradle学习教程

    Gradle学习教程 一.Gradle是什么 二.为什么要Gradle 三.如何安装Gradle 四.核心概念基础 五.Gradle构建的生命周期 初始化阶段 配置阶段 执行阶段 六.任务-(简单任务 ...

  9. Gradle学习(二十)——多项目构建详解

    跨项目配置 虽然子项目之间可以完全隔离单独配置,但是子项目直接有相同特征的情况也是很常见的,多个项目共享配置是更好的选择. 配置和执行 在gradle学习-十八-构建的生命周期这一篇中我们已经讲过Gr ...

  10. Gradle学习手册带你到官网get新技能

    Gradle学习手册带你到官网get新技能 1.Gradle官网地址 Gradle官网:https://guides.gradle.org/creating-new-gradle-builds/ Gr ...

最新文章

  1. Codeforces 864 A Fair Game 水题
  2. 计算机科学导论链式存储,计算机科学导论3.pdf
  3. mysql主主备份_MySQL主从备份和主主备份配置+Keepalived+MySQL读写分离
  4. 网页用数学公式编辑器 可以集成到FCKeditor
  5. EndNote使用技巧之一--参考文献的导入
  6. 字符ascii码值转换_没想到 Unicode 字符还能这样玩?
  7. lcfirst_PHP lcfirst()函数与示例
  8. 如何将多个word文档的内容合并到一个文档 多html转word
  9. 从设计模式到恋爱宝典,程序员们的福利来了
  10. 《深度学习Python实践》第18章——持久化加载模型
  11. 启用多CPU多线程,加快加速OpenJDK的编译办法
  12. 一文弄清传统软件开发与互联网软件开发的异同
  13. C语言函数 思维导图
  14. 单位个人计算机 数据备份,个人所得税软件数据备份,您必须知道的5件事
  15. 大学计算机基础通俗易懂教材,大学计算机基础(21世纪高等学校计算机规划教材)...
  16. 计算机电子电路原理图,经典六款电路图集锦(图文)
  17. VMWare安装配置Win7详解
  18. Siebel training kick off
  19. Debian 安装sublime 安装拼音输入法 安装谷歌浏览器
  20. games101学习笔记_Geometry1(几何)

热门文章

  1. pointnet源码阅读:数据预处理
  2. 全志A31S源码编译
  3. python破解zip,rar文件密码问题
  4. 最新Oreo易支付源码开源版
  5. 关于SOLIDWORKS缩略图预览失败的解决方案
  6. 英语音标学习视频教程
  7. ubuntu 10.04安装 sopcast player
  8. ST7789-TFT屏幕驱动(整理有stm32/51单片机/arduino等驱动代码)
  9. C# 绘制矩形方框读写内存类 cs1.6人物透视例子
  10. 如何进入DOS系统及常用DOS命令总结