【1】Gradele概述

news2024/11/20 13:23:30

目录

  • Gradle
    • 为什么选择Gradle?
      • 支持的语言和框架
      • 兼容的集成开发环境
      • 许可证
    • 兼容性
      • Java
      • Kotlin
      • Groovy
      • Android
    • Gradle 与 Maven 比较
      • 灵活性
      • 性能
      • 用户体验
      • 依赖管理

个人主页: 【⭐️个人主页】
需要您的【💖 点赞+关注】支持 💯


Gradle

【官网指南】:https://docs.gradle.org/current/userguide/userguide.html

Gradle 构建工具是一款快速可靠适应性强开源构建自动化工具,具有优雅且可扩展的``声明式构建语言。

为什么选择Gradle?

Gradle 是一个广泛使用且成熟的工具,拥有活跃的社区和强大的开发者生态系统。

  • Gradle 是 JVM 上最流行的构建系统,也是 Android 和 Kotlin 多平台项目的默认系统。 它拥有丰富的社区插件生态系统。
  • Gradle 可以使用其内置功能第三方插件自定义构建逻辑自动执行各种软件构建场景。
  • Gradle 提供了一种高级声明式富有表现力构建语言,使读取和编写构建逻辑变得容易。
  • Gradle 速度快可扩展,可以构建任何规模和复杂性的项目。
  • Gradle 可生成可靠的结果,同时受益于增量构建构建缓存并行执行等优化。

Gradle, Inc. 提供一项名为 Build Scan® 的免费服务,可提供有关您的构建的广泛信息和见解。 您可以查看扫描以识别问题或共享它们以获得调试帮助。

支持的语言和框架

Gradle 支持 Android、Java、Kotlin Multiplatform、Groovy、Scala、Javascript 和 C/C++。
在这里插入图片描述

兼容的集成开发环境

所有主要的 IDE 都支持 Gradle,包括 Android Studio、IntelliJ IDEA、Visual Studio Code、Eclipse 和 NetBeans。

在这里插入图片描述
您还可以通过终端中的命令行界面 (CLI) 或通过持续集成 (CI) 服务器调用 Gradle。

许可证

Gradle Build Tool 源代码开放的,并根据 Apache License 2.0 获得许可。 Gradle 用户手册和 DSL 参考手册根据 Creative Commons 署名-非商业性使用-相同方式共享 4.0 国际许可协议获得许可。


兼容性

Java

需要 8 到 20 之间的 Java 版本才能执行 Gradle。 尚不支持 Java 21 及更高版本。

Java 6 和 Java 7 可用于编译,但不推荐用于测试。Gradle 6 和 7 不支持使用 Java 9.0 进行测试。

任何完全受支持的 Java 版本都可用于编译或测试。 但是,最新的 Java 版本可能仅支持编译或测试,而不支持运行 Gradle。 支持是使用工具链实现的,并适用于支持工具链的所有任务。

Java versionSupport for compiling/testing/…Support for running Gradle
8N/A2.0
9N/A4.3
10N/A4.7
11N/A5.0
12N/A5.4
13N/A6.0
14N/A6.3
156.76.7
167.07.0
177.37.3
187.57.5
197.67.6
208.18.3
218.4N/A

Kotlin

Gradle versionEmbedded Kotlin versionKotlin Language version
5.01.3.101.3
5.11.3.111.3
5.21.3.201.3
5.31.3.211.3
5.51.3.311.3
5.61.3.411.3
6.01.3.501.3
6.11.3.611.3
6.31.3.701.3
6.41.3.711.3
6.51.3.721.3
6.81.4.201.3
7.01.4.311.4
7.21.5.211.4
7.31.5.311.4
7.51.6.211.4
7.61.7.101.4
8.01.8.101.8
8.21.8.201.8
8.31.9.01.8
8.41.9.101.8

Groovy

Gradle 在 Groovy 1.5.8 到 4.0.0 中进行了测试。

用 Groovy 编写的 Gradle 插件必须使用 Groovy 3.x,以便与 Gradle 和 Groovy DSL 构建脚本兼容。

Android

Gradle 已使用 Android Gradle 插件 7.3 至 8.1 进行了测试。 Alpha 和 Beta 版本可能有效,也可能无效。

Gradle 与 Maven 比较

下面总结了 Gradle 和 Apache Maven 之间的主要区别:灵活性性能用户体验依赖项管理。这并不是详尽无遗的,但您可以查看 Gradle 功能列表和 Gradle 与 Maven 性能比较以了解更多信息。

在这里插入图片描述
此 GIF 显示了使用 Maven 和 Gradle(没有构建缓存)的 Apache Commons Lang 库的并排干净构建。您可以在此处查看内部版本

灵活性

谷歌选择 Gradle 作为 Android 的官方构建工具;不是因为构建脚本是代码,而是因为 Gradle 的建模方式在最基本的方式上是可扩展的。Gradle 的模型还允许它用于 C/C++ 的原生开发,并且可以扩展以涵盖任何生态系统。例如,Gradle 在设计时考虑到了使用其 Tooling API 的嵌入。

GradleMaven 都提供了约定而不是配置。但是,Maven 提供了一个非常严格的模型,这使得定制变得乏味,有时甚至不可能。虽然这可以使理解任何给定的 Maven 构建变得更容易,但只要您没有任何特殊要求,它也使其不适合许多自动化问题。另一方面,Gradle 在构建时考虑到了授权和负责任的用户。

性能

缩短构建时间加快交付速度的最直接方法之一。

Gradle 和 Maven 都采用了某种形式的并行项目构建和并行依赖项解析。最大的区别是 Gradle 的工作回避增量机制。使 Gradle 比 Maven 快得多的前 3 个功能是:

  • 增量 — Gradle 通过跟踪任务的输入和输出,仅运行必要的内容,并在可能的情况下仅处理已更改的文件来避免工作。
  • 构建缓存 - 使用相同的输入(包括计算机之间)重复使用任何其他 Gradle 构建的构建输出。
  • Gradle Daemon — 一个长期存在的进程,可将构建信息保持在内存中的“热”状态。
  • 在这里插入图片描述

在这次 Gradle 与 Maven 性能比较中,这些以及更多的性能特性使 Gradle 在几乎所有场景中都至少快了一倍(对于使用构建缓存的大型构建,速度快了100倍)。

注意:Gradle 和 Maven 用户都可以利用 Develocity 中提供的 Build Cache 技术。 Gradle 用户通常会额外减少 ~50% 的构建时间,而 Maven 用户通常会减少 ~90%

用户体验

在 IDE 中使用 Kotlin 编写的 Gradle 构建脚本
Maven 的存在时间更长,这意味着它通过 IDE 的支持对许多用户来说更好·。然而,Gradle 的 IDE 支持继续快速改进。例如,Gradle 现在有一个基于 Kotlin 的 DSL,它提供了更好的 IDE 体验。Gradle 团队正在与 IDE 制造商合作,以提供更好的编辑支持——请继续关注更新。

尽管 IDE 很重要,但大量用户更喜欢通过命令行界面执行构建操作。Gradle 提供了一个现代 CLI,具有“gradle 任务”等可发现性功能,以及改进的日志记录和命令行完成功能。

最后,Gradle 提供了一个基于 Web 的交互式 UI,用于调试和优化构建:Build Scan™。这些也可以托管在本地,以允许组织收集构建历史记录并进行趋势分析、比较构建以进行调试或优化构建时间。

依赖管理

这两个构建系统都提供了内置功能,可以解析来自可配置存储库的依赖关系。两者都能够在本地缓存依赖项并行下载它们。

作为库使用者,Maven 允许覆盖依赖项,但只能按版本覆盖。Gradle 提供可自定义的依赖项选择和替换规则,只需声明一次,即可在项目范围内处理不需要的依赖项。这种替换机制使 Gradle 能够一起构建多个源项目以创建复合构建

Maven 几乎没有内置的依赖关系范围,这在使用测试夹具或代码生成等常见场景中会强制使用笨拙的模块架构。例如,单元测试和集成测试之间没有分离。Gradle 允许自定义依赖项范围,从而提供更好的建模和更快的构建。

Maven 依赖项冲突解决使用最短路径,该路径受声明顺序的影响。Gradle 会完全解决冲突,选择图表中找到的依赖项的最高版本。此外,使用 Gradle,您可以将版本声明为严格版本,这允许它们优先于传递版本,从而允许降级依赖项

作为库生产者,Gradle 允许生产者声明“api”“implementation”依赖项,以防止不需要的库泄漏到消费者的类路径中。Maven 允许发布者通过可选的依赖项提供元数据,但仅作为文档。Gradle 完全支持功能变体和可选依赖项。

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

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

相关文章

【链表】数据查找和合并

获取链表中间位置的数据 #include <stdio.h> #include <stdlib.h>/* 定义链表的结构体 */ struct Node {int data;struct Node *next; };/* 获取链表中处于中间位置的元素并打印出来*/ void printMiddle(struct Node *head) {struct Node *slow_ptr head;struct …

【Linux】--进程信号

信号 1.信号入门 程序员设计进程的时候&#xff0c;早就已经设计了对信号的识别能力&#xff01;&#xff01;&#xff01;&#xff01;进程在没有收到信号的时候&#xff0c;其实它早就已经知道一个信号该怎么处理了&#xff01;因为信号可能随时会产生&#xff0c;所有在信…

鲲鹏920的架构分析

*本文信息主要来源于书籍《鲲鹏处理器架构与编程》以及论文《Kunpeng 920: The First 7-nm Chiplet-Based 64-Core ARM SoC for Cloud Services》 * 笔者已然写了一篇上述论文的分析博客&#xff0c;但尚觉论文内容对chiplet架构描述不够清晰&#xff0c;因此查阅《鲲鹏处理器…

Flutter笔记 - 关于 fit 属性以及相关知识的总结

Flutter笔记 关于 fit 属性以及相关知识的总结 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/13434451…

lenovo联想小新 Air-14 2019 AMD平台API版(81NJ)原装出厂Windows10系统

下载链接&#xff1a;https://pan.baidu.com/s/1HCC66EH4UOcgofRx5_v1oA?pwdlgqw 提取码&#xff1a;lgqw 原厂系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘 文件格式&#xf…

关于Google Play应用商店的优化技巧1

作为Google Play商店ASO策略的一部分&#xff0c;我们需要查明并优化有助于应用排名的各种因素。在这里将介绍几个可以增强我们列表并增加在搜索中被发现的机会的技巧。 1、优化标题和描述字段。 在创建有效的Google Play商店列表时&#xff0c;我们应该考虑的第一个元素是应用…

易货:一种绿色、高效的商业模式

随着社会经济的发展和人民生活水平的提高&#xff0c;人们手中闲置的物品越来越多&#xff0c;如何将这些物品盘活&#xff0c;成为了一个亟待解决的问题。易货商业模式应运而生&#xff0c;它不仅可以将闲置物品变成财富&#xff0c;还可以为企业和个人带来更多的商机和资源。…

【题解】2023-11-11 B层模拟赛T1

宣传一下 算法提高课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 CF461B 题目描述 一棵树有 n n n 个节点&#xff0c; n − 1 n − 1 n−1 条边。树上的节点有两种&#xff1a;黑&#xff0c;白节点。 Tyk 想断掉一些边把树分成很多部分。 他想要保证每个部…

【优选算法系列】【专题二滑动窗口】第二节.1004. 最大连续1的个数 III和1658. 将 x 减到 0 的最小操作数

文章目录 前言一、最大连续1的个数 III 1.1 题目描述 1.2 题目解析 1.2.1 算法原理 1.2.2 代码编写二、将 x 减到 0 的最小操作数 2.1 题目描述 2.2 题目解析 2.2.1 算法原理 2.2.2 代码编写总结 前言 一、最大连…

迈巴赫S480升级流星雨大灯 最高配的数字大灯

“流星雨”数字大灯&#xff0c;极具辨识度&#xff0c;通过260万像素的数字微镜技术&#xff0c;实现“流星雨”仪式感与高度精确的光束分布&#xff1b;在远光灯模式下&#xff0c;光束精准度更达之前84颗LED照明的100倍&#xff0c;更新增坡道照明功能&#xff0c;可根据导航…

进程线程

从Android3.0开始&#xff0c;系统要求网络访问必须在子线程中进行&#xff0c;否则会抛出异常&#xff0c;这么做是为了避免主线程被阻塞而导致ANR&#xff0c;那么网络访问的操作就必须要放到线程中去执行。 进程 进程是操作系统结构的基础&#xff0c;是程序在一个数据集合…

极兔面试:微服务爆炸,如何解决?Uber 是怎么解决2200个微服务爆炸的?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 谈谈你的DDD落地经验&#xff1f; 谈谈你对DDD的理解&#x…

基于HF transformers的AI建模和训练实战

我们经常使用 scikit-learn 对监督学习和无监督学习任务的数据进行建模。 我们熟悉面向对象的设计&#xff0c;例如启动类并从类中调用子函数。 然而&#xff0c;当我个人使用 PyTorch 时&#xff0c;我发现与 scikit-learn 类似但又不一样的设计模式。 在线工具推荐&#xff…

11个最受欢迎的3D打印AI软件【2023】

如今&#xff0c;人工智能&#xff08;AI&#xff09;似乎已经成为每个人都在谈论的话题。 尽管围绕该技术的伦理问题存在着重要的讨论&#xff0c;但不可否认的是&#xff0c;人工智能可能成为包括 3D 打印在内的许多不同行业的重要工具。 事实上&#xff0c;人工智能在 3D 打…

【Java王大师王天师】关注有礼博客模板

【点我-这里送书】 本人详解 作者&#xff1a;王文峰&#xff0c;参加过 CSDN 2020年度博客之星&#xff0c;《Java王大师王天师》 公众号&#xff1a;JAVA开发王大师&#xff0c;专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生&#xff0c;期待你的…

单片机启动流程

存储器 ​ 一个单片机中存在rom和ram&#xff0c;Soc也有rom和ram&#xff08;ddrx&#xff09;&#xff0c;部分Soc还包含MMU&#xff08;Memory Manage Unit 内存管理单元&#xff09;— &#xff08;用于系统内存管理&#xff0c;比如说虚拟内存空间&#xff0c;内存区间的…

YOLOV5改进:RefConv | 即插即用重参数化重聚焦卷积替代常规卷积,无额外推理成本下涨点明显

1.该文章属于YOLOV5/YOLOV7/YOLOV8改进专栏,包含大量的改进方式,主要以2023年的最新文章和2022年的文章提出改进方式。 2.提供更加详细的改进方法,如将注意力机制添加到网络的不同位置,便于做实验,也可以当做论文的创新点 3.涨点效果:RefConv,实现有效涨点! 论文地址 …

响应式婴幼儿早教启蒙网站模板源码

模板信息&#xff1a; 模板编号&#xff1a;6830 模板编码&#xff1a;UTF8 模板颜色&#xff1a;红色 模板分类&#xff1a;学校、教育、培训、科研 适合行业&#xff1a;培训机构类企业 模板介绍&#xff1a; 本模板自带eyoucms内核&#xff0c;无需再下载eyou系统&#xf…

AI批量剪辑矩阵托管系统----源码技术开发

AI批量剪辑矩阵托管系统----源码技术开发 抖音账号矩阵系统是基于抖音开放平台研发的用于管理和运营多个抖音账号的平台。它可以帮助用户管理账号、发布内容、营销推广、分析数据等多项任务&#xff0c;从而提高账号的曝光度和影响力。 具体来说&#xff0c;抖音账号矩阵系统可…

如何通过命令查看某一文件的内容改动和提交记录

1. 查看最近10条的提交记录 一行显示 git log --oneline -102.查看某一个文件的提交记录 git log --oneline -10 文件路径3.查看某个文件的修改内容 查看某次提交的修改 内容 git show bcd9299 查看某次提交某个文件的修改内容git show bcd9299 文件路径4.对比两次提交内容的…