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.rhkb.cn/news/180866.html

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

相关文章

【C++】继承

本期我们来学习c中的继承 目录 一、啥是继承 二、继承的定义 1.1 定义格式 1.2 继承方式 三、基类和派生类对象赋值转换 四、继承中的作用域 五、派生类的默认成员函数 5.1 派生类的构造函数和基类构造函数的关系 5.2 派生类的拷贝函数和基类拷贝函数的关系 5.3 派生…

Python算法例7 四数乘积

1. 问题描述 给定一个长度为n的数组a和一个正整数k,从数组中选择四个数,要求四个数的乘积小于等于k,求方案总数。 2. 问题示例 给定n5,a[1,1,1,2,2],k3,返…

小程序day02

目标 WXML模板语法 数据绑定 事件绑定 那麽問題來了,一次點擊會觸發兩個組件事件的話,該怎么阻止事件冒泡呢? 文本框和data的双向绑定 注意点: 只在标签里面用value“{{info}}”,只会是info到文本框的单向绑定,必须在…

【Linux】多路IO复用技术②——poll详解如何使用poll模型实现简易的一对多服务器(附图解与代码实现)

在阅读本篇博客之前,建议大家先去看一下我之前写的这篇博客,否则你很可能会一头雾水 【Linux】多路IO复用技术①——select详解&如何使用select模型在本地主机实现简易的一对多服务器(附图解与代码实现)http://t.csdnimg.cn/…

JavaEE平台技术——预备知识(Web、Sevlet、Tomcat)

JavaEE平台技术——预备知识(Web、Sevlet、Tomcat) 1. Web基础知识2. Servlet3. Tomcat并发原理 1. Web基础知识 🆒🆒上个CSDN我们讲的是JavaEE的这个渊源,实际上讲了两个小时的历史课,给大家梳理了一下&a…

为机器学习算法准备数据(Machine Learning 研习之八)

本文还是同样建立在前两篇的基础之上的! 属性组合实验 希望前面的部分能让您了解探索数据并获得洞察力的几种方法。您发现了一些数据怪癖,您可能希望在将数据提供给机器学习算法之前对其进行清理,并且发现了属性之间有趣的相关性&#xff0c…

Web自动化测试 —— PageObject设计模式!

一、page object 模式简介 1.1、传统 UI 自动化的问题 无法适应 UI 频繁变化无法清晰表达业务用例场景大量的样板代码 driver/find/click 二、page object 设计原则 2.1、POM 模式的优势 降低 UI 变化导致的测试用例脆弱性问题让用例清晰明朗,与具体实现无关 2.…

三、操作系统

(一)概述 操作系统是管理整个系统的软、硬件资源的系统,既是人和硬件之间的一种接口,也是应用软件与硬件之间的接口。 (二)进程管理 1.进程的状态 进程的状态是操作系统对进程进行管理的时候设置的几种状…

Gopro hero5运动相机格式化后恢复案例

Gopro运动相机以稳定著称,旗下的Hero系列销售全球。下面我们来看一个Hero5格式化后拍了少量素材的恢复案例。 故障存储:64G MicroSD卡 Exfat文件系统 故障现象: 64G的卡没备份数据时做了格式化操作又拍了一条,发现数据没有备份,客户自行使…

c语言经典算法—二分查找,冒泡,选择,插入,归并,快排,堆排

一、二分查找 1、前提条件&#xff1a;数据有序&#xff0c;随机访问&#xff1b; 2、实现&#xff1a;递归实现&#xff0c;非递归实现 3、注意事项&#xff1a; 循环退出条件:low <high,low high.说明还有一个元素&#xff0c;该元素还要与key进行比较 mid的取值&#xf…

C# list<T>去重

文章目录 C# list<T>去重值类型去重List<object>object is intobject is decimalobject is charobject is boolobject is string List<int>List<string> 引用类型去重 C# list去重 值类型去重 List object is int //object is intList<object&g…

Redis-命令操作Redis

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 越努力 &#xff0c;越幸运。 1.Redis简介 1.1.什么是Redis Redis是一个开源&#xff08;BSD许可&#xff09;&#xff0c;内存存储的数据…

unittest 通过TextTestRunner(buffer=True)打印断言失败case的输出内容

buffer是unittest.TextTestRunner的一个参数&#xff0c;它决定了测试运行时是否将输出结果缓存&#xff0c;并在测试完成后一次性打印。 当buffer设置为True时&#xff0c;测试运行期间的输出结果会被缓存起来&#xff0c;并在测试完成后一次性打印。这对于一些输出频繁的测试…

SPSS多因素方差分析

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

MongoDB安装及开发系例全教程

一、系列文章目录 一、MongoDB安装教程—官方原版 二、MongoDB 使用教程(配置、管理、监控)_linux mongodb 监控 三、MongoDB 基于角色的访问控制 四、MongoDB用户管理 五、MongoDB基础知识详解 六、MongoDB—Indexs 七、MongoDB事务详解 八、MongoDB分片教程 九、Mo…

炸了!CVPR 2024投稿ID突破18000

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>【计算机视觉和Transformer】交流群 扫码加入CVer知识星球&#xff0c;可以最快学习到最新顶会顶刊上的论文idea和CV从入门到精通资料&#xff0c;以及最前沿项目和应用&…

分析报告有样板了-奥威BI数据可视化报表模板

述职报告、月度数据分析报告、季度数据分析报告、区域数据分析报告……人在职场&#xff0c;数据分析报告少不了。那么&#xff0c;怎么才能在极短的时间内做出一张既好看又突出重点、分析逻辑在线的数据可视化分析报表&#xff1f;奥威BI软件的建议是采用BI数据可视化报表模板…

0-1矩阵列互斥问题——回溯法 Python实现

三、 0-1 矩阵的列集互斥问题。给定一个 m n m \times n mn 的 0-1 矩阵 A \mathrm{A} A 。定义列互斥为: 对于矩阵 A A A 中的任意两列 i i i 和 j j j, 如果在对应的每一行上, i i i 和 j j j 不存在同时为 1 的情况, 则称列 i \mathrm{i} i 和 j \mathrm{j} j 互斥…

unity工程

1首先我们来熟悉一下Unity每个文件夹的作用 1.assets&#xff1a;工程资源文件夹 2.library&#xff1a;库文件夹 3.logs&#xff1a;日志文件夹 4.obj&#xff1a;编译产生中间文件 5.packages&#xff1a;包配置信息 6&#xff1a;projectsettings&#xff1a;工程设置…

Sync Folders Pro(文件夹数据同步工具)

Sync Folders Pro for Mac 是一款功能强大的文件夹同步工具&#xff0c;旨在帮助用户在 Mac 计算机和移动设备之间创建双向同步。这款软件支持各种文件系统和设备&#xff0c;如 iPhone&#xff0c;iPad&#xff0c;iPod&#xff0c;Android 等。通过这款软件&#xff0c;用户可…