Gradle笔记 一 Gradle的安装与入门

文章目录

  • 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 的原因:

  1. 目前已经有相当一部分公司在逐渐使用Gradle作为项目构建工具了。
  2. 作为Java开发程序员,如果想下载Spring、SpringBoot等Spring家族的源码,基本上基于Gradle构建的。
  3. 支持基于groovy语言编写脚本,侧重于构建过程的灵活性,适合于构建复杂度较高的项目。
  4. gradle相比服务端java,在Android上更为流行,主要也是Android上更侧重构建的复杂性和多样性
  5. 构建效率高,官方数据显示,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:     e9251e572c9bd1d01e503a0dfdf43aedaeecdc3fKotlin:       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文件

  1. 把以.gradle结尾的文件放到 USER_HOME/.gradle/init.d/ 目录下
  2. 把以.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 detailsBUILD 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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/130948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目管理之如何估算项目工作成本

在项目管理中,如何估算项目工作成本是一个关键问题。为了解决这个问题,我们可以采用自上而下的成本限额估算法和自下而上的成本汇总估算法。这两种方法各有优缺点,但都可以帮助我们准确地估算项目工作成本。 自上而下的成本限额估算法 自上…

InnoDB中Buffer Pool详解

1. 概念及特点 Buffer Pool 是 MySQL 中 InnoDB 存储引擎用来缓存表数据和索引数据的内存区域。这个内存区域被用来存储磁盘上的数据页的副本,这样常用的数据可以在内存中快速被访问,而不必每次都从磁盘中读取。 以下是 Buffer Pool 的一些重要特点&a…

串口通信(6)应用定时器中断+串口中断实现接收一串数据

本文为博主 日月同辉,与我共生,csdn原创首发。希望看完后能对你有所帮助,不足之处请指正!一起交流学习,共同进步! > 发布人:日月同辉,与我共生_单片机-CSDN博客 > 欢迎你为独创博主日月同…

I/O多路转接之select

承接上文:I/O模型之非阻塞IO-CSDN博客 简介 select函数原型介绍使用 一个select简单的服务器的代码书写 select的缺点 初识select 系统提供select函数来实现多路复用输入/输出模型 select系统调用是用来让我们的程序监视多个文件描述符的状态变化的; 程序会停在s…

unittest 通过TextTestRunner(failfast=True),失败或错误时停止执行case

failfast是unittest.TextTestRunner的一个参数,它用于控制测试运行过程中遇到第一个失败或错误的测试方法后是否立即停止执行。 当failfast设置为True时,一旦发现第一个失败或错误的测试方法,测试运行就会立即停止,并输出相应的失…

sql基础+考点+题

查询:select from 筛选:where and和or 排序:order by(降序排列需要指定DESC关键字) join:left join 、right join 和inner join 分组聚合:group by ---搭配count , sum , avg 过滤&#x…

安全防御——二、ENSP防火墙实验学习

安全防御 一、防火墙接口以及模式配置1、untrust区域2、trust区域3、DMZ区域4、接口对演示 二、防火墙的策略1、定义与原理2、防火墙策略配置2.1 安全策略工作流程2.2 查询和创建会话 3、实验策略配置3.1 trust-to-untrust3.2 trust-to-dmz3.3 untrust-to-dmz 三、防火墙的区域…

消息中间件-RabbitMQ介绍

一、基础知识 1. 什么是RabbitMQ RabbitMQ是2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,简称MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法,由Erlang(专门针对于大…

SPSS单因素方差分析

前言: 本专栏参考教材为《SPSS22.0从入门到精通》,由于软件版本原因,部分内容有所改变,为适应软件版本的变化,特此创作此专栏便于大家学习。本专栏使用软件为:SPSS25.0 本专栏所有的数据文件请点击此链接下…

Python基础入门例程39-NP39 字符串之间的比较(运算符)

最近的博文: Python基础入门例程38-NP38 牛牛的逻辑运算(运算符)-CSDN博客 Python基础入门例程37-NP37 不低于与不超过(运算符)-CSDN博客 Python基础入门例程36-NP36 谁的数字大(运算符)-CSD…

航模模拟器训练

固定翼吃灰很久忘记咋么操作 故这里发帖防止忘记 准备物品 航模遥控器 aux线 即两端都是耳机插头的线 解密狗 电脑 phoenixRC 航模模拟软件(【飞舜极创】凤凰5.0飞行模拟器 安装和设置方法_哔哩哔哩_bilibili) 链接:https://pan.baidu.com/s/1XL4ZWhMR7MQMxDPC7B…

GraphQL入门与开源的GraphQL引擎Hasura体验

背景 Hasura 是一个开源的 GraphQL 引擎,它可以帮助开发人员快速构建和部署现代应用程序的后端。它提供了一个自动化的 GraphQL API ,可以直接连接到现有的数据库,并提供实时数据推送和订阅功能。 Hasura 团队总部位于印度。 下载安装 脚本…

分享86个工作总结PPT,总有一款适合您

分享86个工作总结PPT,总有一款适合您 PPT下载链接:https://pan.baidu.com/s/12aRTr5NKG5YTnMnwNbqOrQ?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易。知…

顶层模块【FPGA】

1顶层模块: 不能像C语言的h文件那样,把io的定义放在其他文件。 在Verilog中,顶层模块是整个设计的最高层次,它包含了所有其他模块和子模块。 顶层模块定义了整个设计的输入和输出端口,以及各个子模块之间的连接方式。…

大数据毕业设计选题推荐-旅游景点游客数据分析-Hadoop-Spark-Hive

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

使用vscode开发uniapp项目常用的辅助插件,提升开发效率

为什么不使用hbuilder开发呢?因为hbuilder对ts和vue3语法支持并不友好,而且代码提示不智能,也不能使用最近很流行的coplit和CodeGeex智能提示,所以就换掉hbulider,使用我们熟悉的vscode开发吧。 第一个:un…

【Linux】Linux+Nginx部署项目(负载均衡动静分离)

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Linux的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.Nginx负载均衡 1.什么是负载均衡 2.实…

我终于学会的前端技能——代码调试、打断点

在技术的世界里,要用魔法来打败魔法 说来惭愧我做前端已近三年了竟然还没有学会如何调试代码,也就是给自己的代码打上断点一步步看它的运行状态以达到理清代码运行逻辑、排查问题提升开发效率的目的。直到最近我才学会了这一技能,在这之前我用…

单行自动横向滚动——css实现

效果 封装组件 <template><div ref"container" class"scroll-area"><divref"content":class"[isScroll ? scroll : no-scroll]":style"{ color: fontColor }">{{ content }}</div></div> &…

Android Studio的笔记--SerialPort串口通讯学习和使用

SerialPort串口通讯学习和使用 SerialPortandroid-serialport-api源码下载 Android-SerialPort-API源码下载readme版本 Android-SerialPort-Tool源码下载 Android-Serialport源码下载使用方法readme android中使用串口通信使用android-serialport-api方式第1种 链接第2种 导入S…