[springboot]菜鸟笔记20230607-gradle和maven

这篇具有很好参考价值的文章主要介绍了[springboot]菜鸟笔记20230607-gradle和maven。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

    在springboot官网的入门指南中,专门有两个小专题分别用gradle和maven来构建java项目,在本文中,将浅浅总结下这两种工具的灵活性、性能、社区、用户体验、插件、缓存和版本控制、依赖管理等方面的共性和区别。

Gradle

Gradle是一种基于JVM的构建工具,可用于构建和管理任何类型的应用程序。它使用Groovy或Kotlin语言编写构建脚本,并使用声明性语言来定义项目的依赖关系、构建任务和构建过程。Gradle还支持插件和扩展,使它可以与其他工具和框架集成。Gradle被广泛用于Android应用程序的构建和管理,也可用于构建Java、Kotlin、Groovy和其他语言的项目。

Maven

Maven是一个Java项目的自动化构建工具。它使用了一个中央信息管理的文件(pom.xml),其中包括项目的构建信息、依赖关系和其他配置信息。Maven能够自动下载所需的库文件并进行编译、测试、打包、发布等一系列操作。由于Maven规范化的构建过程和简化的项目管理,使得它成为Java开发中非常流行的工具。

灵活性

谷歌选择Gradle作为Android的官方构建工具,不是因为构建脚本是代码,而是因为Gradle以一种最基本可扩展的方式建模。Gradle的模型还允许使用C/C++进行本地开发,且可以扩展到任何生态系统。例如,Gradle在设计时就考虑了使用它的工具API来嵌入。
Gradle和Maven都提供了优于配置的约定。然而,Maven提供了一个非常严格的模型,使得自定义变得冗长,有时甚至不可能。虽然这样可以更容易地理解任何给定的Maven构建,但只要您没有任何特殊需求,它也使它不适合许多自动化问题。另一方面,Gradle是考虑到授权和负责任的用户而构建的。

Maven使用XML作为配置文件,而Gradle使用Groovy或Kotlin作为配置文件。Groovy和Kotlin都是基于Java的编程语言,因此Gradle的DSL更加灵活和易于学习。

性能

缩短构建时间是加快发布速度的最直接方法之一。Gradle和Maven都采用了某种形式的并行项目构建和并行依赖解析。最大的不同在于Gradle的工作回避和递增机制。Gradle使用增量构建,只对发生更改的部分进行构建,让Gradle比Maven快得多。

Gradle和Maven用户都可以利用Gradle Enterprise中提供的构建缓存技术。Gradle用户通常会体验到大约50%的额外构建时间减少,而Maven用户通常会体验到大约90%的额外构建时间减少。

社区

Maven有更广泛的用户群体和更多的插件,Gradle的用户群体还在增长中。

用户体验

Maven诞生的更早,有着更长的使用期限,意味着它通过ide提供的支持对许多用户来说更好。不过,Gradle对IDE的支持也在快速改进。例如,Gradle现在有一个基于kotlin的DSL,它提供了更好的IDE体验。Gradle提供了一个现代的CLI,它具有可发现的功能,如“Gradle tasks”,以及改进的日志记录和命令行完成功能。Gradle还提供了一个交互式的基于web的UI来调试和优化构建:Build Scan™。这些也可以在内部托管,以允许组织收集构建历史并进行趋势分析,比较构建以进行调试,或优化构建时间。

插件

Gradle具有与Maven相同的插件系统,但Gradle的插件更易于使用和配置。Gradle插件还支持多语言和多平台

缓存和版本控制

Maven在本地和远程维护缓存,而Gradle依赖本地缓存,在版本控制系统中维护依赖项。这意味着在生成过程中更改依赖项版本不会丢失。

依赖管理

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

作为库消费者,Maven允许重写依赖项,但只能通过版本。Gradle提供了可定制的依赖项选择和替换规则,这些规则可以声明一次,并在项目范围内处理不需要的依赖项。这种替代机制使Gradle能够一起构建多个源项目来创建复合构建。

Maven只有很少的内置依赖作用域,这在使用测试fixture或代码生成等常见场景中会导致模块架构的尴尬。例如,单元测试和集成测试之间没有分离。Gradle允许自定义依赖范围,这提供了更好的建模和更快的构建。

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

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

总结

总的来说,Gradle比Maven更灵活,更快,更适合大型,复杂的项目。但是,选择Gradle还是Maven取决于个人需求和团队的习惯。文章来源地址https://www.toymoban.com/news/detail-475809.html

到了这里,关于[springboot]菜鸟笔记20230607-gradle和maven的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Gradle和Maven的区别

    当涉及到构建和管理项目时,Gradle和Maven是两个非常流行的选项。本文将讨论Gradle和Maven之间的区别以及它们的配置信息差异。 1.1 构建脚本语言 Maven使用XML作为构建脚本语言,而Gradle使用基于Groovy的DSL(领域特定语言)作为构建脚本语言。这使得Gradle更加灵活和易于编写。

    2024年02月15日
    浏览(37)
  • 一个操作,轻松迁移 Maven 至 Gradle

    今天我们来讲讲如何将 Maven 项目转换为 Gradle 项目。 这个过程还是蛮简单的,下面通过一个例子来说明怎么转换。 Gradle 设置 如果没有安装 gradle, 我们可以从 Gradle 官网下载最新的版本,根据gradle官方的文档安装即可。 可以看我们之前的文章,这里不过多的描述。 Maven po

    2024年02月07日
    浏览(35)
  • 阿里云 gradle maven配置中心地址

    仓库名称 阿里云仓库地址 阿里云仓库地址(老版) 源地址 central https://maven.aliyun.com/repository/central https://maven.aliyun.com/nexus/content/repositories/central https://repo1.maven.org/maven2/ jcenter https://maven.aliyun.com/repository/public https://maven.aliyun.com/nexus/content/repositories/jcenter http://jcenter.bintray.com/ pu

    2024年01月18日
    浏览(39)
  • 阿里云Maven和Gradle仓库最新配置

       阿里云云效 Maven 是什么?    阿里云Maven中央仓库为 阿里云云效 提供的公共代理仓库,帮助研发人员提高研发生产效率,使用阿里云Maven中央仓库作为下载源,速度更快更稳定。    官网地址:https://developer.aliyun.com/mvn/guide 仓库名称 阿里云仓库地址 central https://mav

    2024年02月10日
    浏览(62)
  • 云原生—Gradle和Maven性能对比及技术选型

      目录 一、性能对比 1、Java类库 2、小型多项目构建场景 3、中型多项目构建 4、大型多项目构建 5、大型单体应用 6、性能对比总结 7、Gradle为什么这么快 二、技术选型 1、性能方面 2、可扩展性 Kotiln语言有多灵活 Groovy的优越性 Gradle和Maven都可以作为Java应用程序的构建工具。

    2024年02月05日
    浏览(36)
  • Maven 和 Gradle 官方文档及相关资料的网址集合

    Maven 仓库依赖包官方查询通道:https://mvnrepository.com/ Maven 插件官方文档:https://maven.apache.org/plugins/ 安卓依赖包官方查询通道*:https://maven.google.com/web/ Gradle 官方文档:https://docs.gradle.org/current/userguide/userguide.html Maven 下载安装教程:https://blog.csdn.net/wangpaiblog/article/details/1126895

    2024年02月09日
    浏览(70)
  • 如何将安卓 Gradle 模块打包发布到本地 Maven 仓库

    笔者的运行环境: Android Studio Flamingo | 2022.2.1 Android SDK 33 Gradle 8.0.1 JDK 17   Android 的 Gradle 项目与一般的 Gradle 项目是不同的,因此对将 Gradle 模块打包发布到本地 Maven 仓库来说,对普通 Gradle 项目适用的方法,对 Android 项目是不适用的。   因为普通 Gradle 项目打包生成的是

    2024年02月02日
    浏览(55)
  • Gradle和Maven的详细讲解和两者之间的区别

    Gradle 是一种基于 Groovy 语言的构建自动化工具,用于构建、测试和部署项目。它使用声明式的脚本来定义构建过程,允许开发者灵活地配置项目构建。Gradle 使用一种被称为 Groovy DSL(领域特定语言)的语法,使构建脚本易于编写和维护。 主要特点: 声明式构建脚本: Gradle

    2024年02月12日
    浏览(41)
  • spingboot按照依赖包除了maven还有Gradle,两者的区别?

    Maven和Gradle是两种常用的构建工具,用于管理Java项目的依赖关系和构建过程。它们之间的区别如下: 语法:Maven使用XML作为构建文件的格式,而Gradle使用基于Groovy或Kotlin的领域特定语言(DSL)。 灵活性:相比Maven,Gradle提供更大的灵活性和自定义能力。Gradle的DSL允许你以声明

    2024年02月10日
    浏览(35)
  • Gradle-02:问题Plugin with id ‘maven‘ not found

    在一次使用 Gradle 构建自己项目,完事,需要上传到本地 Maven 仓库,因为事先并不清楚 apply plugin: \\\'maven\\\' 插件已经被 Gradle 移除,找了一圈,才找到解决方案。 Gradle 7 版本将 maven 插件移除,用 maven publish 插件替代。 在 Gradle 项目右侧栏目下,寻找任务为 publishing ,使用 publi

    2024年02月14日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包