最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Maven與Gradle的區(qū)別對比分析

 更新時間:2026年05月09日 08:51:33   作者:程序大視界  
這篇文章給大家給大家介紹了Maven與Gradle的區(qū)別對比分析,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧

前言

Java世界中主要有三大構(gòu)建工具:Ant、Maven和Gradle。經(jīng)過幾年的發(fā)展,Ant幾乎銷聲匿跡、Maven是用的普遍的一種,而Gradle目前也越來越受追捧。筆者有幸見證了Maven的熱潮和Gradle的興起。Maven的主要功能主要分為5點,分別是依賴管理系統(tǒng)、多模塊構(gòu)建、一致的項目結(jié)構(gòu)、一致的構(gòu)建模型和插件機制。Maven與Gradle在使用中各有千秋,根據(jù)使用場景擇優(yōu)用之。

1. Maven 與 Gradle 對比

maven要引入依賴 pom.xml

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.1.5.RELEASE</version>
</dependency>

而Gradle引入 build.gradle

implementation?'org.springframework.boot:spring-boot-starter-web'

優(yōu)點: Gradle 相當(dāng)于 Maven 與 Ant 的合體 
缺點: 對于微服務(wù)多項目的子類引用,不如 Maven

Maven

  • 項目結(jié)構(gòu)/依賴由pom.xml定義
  • 生產(chǎn)代碼存放在src/main/java下
  • 測試代碼存放在src/test/java下

Gradle

  • 項目結(jié)構(gòu)/依賴由build.gradle定義
  • 生產(chǎn)代碼存放在src/main/java下
  • 測試代碼存放在src/test/java下

2. 構(gòu)建流程和生命周期

  • Maven
    • 三個標準的生命周期(lifecycle)
    • 最小的運行單元是目標(goal)
    • 插件可以把自己的目標綁定在生命周期的某個階段(phase)上
  • Gradle
    • 沒有顯示的生命周期
    • 最小的運行單元是任務(wù)(task),任務(wù)之間可以相互依賴
    • 可以動態(tài)地創(chuàng)建任務(wù)

3. 包管理和傳遞性依賴

  • Maven
    • 一個包由groupId/artifactId/version確定唯一坐標
    • 包來源于中央倉庫
    • 傳遞性依賴
    • 當(dāng)某個包的的使用依賴于其他包時,Maven會自動導(dǎo)入所有的依賴包
  • Gradle
    • 使用Ivy的構(gòu)件系統(tǒng),是Maven的構(gòu)件系統(tǒng)的超集
    • Ant ivy是一個比Maven倉庫更加廣闊的倉庫

    • 與Maven倉庫兼容
    • 當(dāng)出現(xiàn)依賴沖突時

  • Mavenc依賴沖突.png
  • Maven依賴解調(diào)遵循兩個原則,路徑最近原則以及定義順序原則
  • Gradle的沖突解析則是選用新的版本(新的版本一般都會向下兼容)

總結(jié):

Maven

  • 穩(wěn)定可靠,插件眾多。(這么多年版本一直維持在3.XX,而且很久才發(fā)布一次小更新,說明他穩(wěn)定且bug較少)

  • 略顯啰嗦,自定義邏輯較麻煩(Maven使用xml的方式進行配置,xml的劣勢繁瑣就會體現(xiàn)在Maven上)

  • 大型項目會逐漸遇到性能問題
    • 使用Maven構(gòu)建的項目都會經(jīng)過幾個生命流程,內(nèi)部沒有緩存機制,項目越來越大重新構(gòu)建所花費的時間也就越長。
    • 由于Maven的開發(fā)基本靠社區(qū)支持,沒有更多的資金用于繼續(xù)開發(fā)維護Maven,導(dǎo)致開發(fā)基本停瀉。
  • Gradle
    • Gradle采用代碼邏輯的方式進行構(gòu)建,使得它能更加的靈活。
    • Gradle內(nèi)部存在緩存機制(當(dāng)文件輸入和輸出都沒改變的情況下,認為這就是沒變的代碼,直接進行輸出。但當(dāng)你改變的依賴包版本,它有時并沒更新,也是緩存機制的問題),相比會快些。
    • 開發(fā)活躍,版本太多

到此這篇關(guān)于Maven與Gradle的區(qū)別的文章就介紹到這了,更多相關(guān)Maven與Gradle的區(qū)別,Maven與Gradle的區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java中阻塞隊列和非阻塞隊列的實現(xiàn)

    java中阻塞隊列和非阻塞隊列的實現(xiàn)

    在Java并發(fā)編程中,阻塞隊列和非阻塞隊列是兩種主要的隊列類型,分別適用于不同的場景,了解這兩種隊列的特點和工作機制,可以幫助開發(fā)者更好地選擇合適的數(shù)據(jù)結(jié)構(gòu)解決并發(fā)問題
    2024-10-10
  • SpringBoot統(tǒng)一異常處理的實用方案

    SpringBoot統(tǒng)一異常處理的實用方案

    在日常開發(fā)中,你一定見過這樣的代碼:代碼冗余、維護困難、前端對接痛苦、日志混亂,線上出問題還難定位,統(tǒng)一異常處理,就是用來解決這些問題的,今天這篇文章,帶你從零到一實現(xiàn)SpringBoot全局統(tǒng)一異常處理,需要的朋友可以參考下
    2026-03-03
  • Eclipse 出現(xiàn)A configuration with this name already exists問題解決方法

    Eclipse 出現(xiàn)A configuration with this name already exists問題解決方

    這篇文章主要介紹了Eclipse 出現(xiàn)A configuration with this name already exists問題解決方法的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • Java8?Stream教程之collect()的技巧

    Java8?Stream教程之collect()的技巧

    Java8引入了全新的Stream?API,這里的Stream和I/O流不同,它更像具有Iterable的集合類,但行為和集合類又有所不同,下面這篇文章主要給大家介紹了關(guān)于Java8?Stream教程之collect()的技巧,需要的朋友可以參考下
    2022-09-09
  • 如何將JSON字符串?dāng)?shù)組轉(zhuǎn)對象集合

    如何將JSON字符串?dāng)?shù)組轉(zhuǎn)對象集合

    這篇文章主要介紹了如何將JSON字符串?dāng)?shù)組轉(zhuǎn)對象集合,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java異步非阻塞編程的幾種方式總結(jié)

    Java異步非阻塞編程的幾種方式總結(jié)

    這篇文章主要介紹了Java異步非阻塞編程的幾種方式總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java使用ByteBuffer進行多文件合并和拆分的代碼實現(xiàn)

    Java使用ByteBuffer進行多文件合并和拆分的代碼實現(xiàn)

    因為驗證證書的需要,需要把證書文件和公鑰給到客戶,考慮到多個文件交互的不便性,所以決定將2個文件合并成一個文件交互給客戶,但是由于是加密文件,采用字符串形式合并后,拆分后文件不可用,本文給大家介紹了Java使用ByteBuffer進行多文件合并和拆分,需要的朋友可以參考下
    2024-09-09
  • SecurityUtils.getSubject().getPrincipal()為null的問題

    SecurityUtils.getSubject().getPrincipal()為null的問題

    這篇文章主要介紹了SecurityUtils.getSubject().getPrincipal()為null的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Spring AOP 切面@Around注解的用法說明

    Spring AOP 切面@Around注解的用法說明

    這篇文章主要介紹了Spring AOP 切面@Around注解的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • SpringBoot?SpringSecurity?JWT實現(xiàn)系統(tǒng)安全策略詳解

    SpringBoot?SpringSecurity?JWT實現(xiàn)系統(tǒng)安全策略詳解

    Spring?Security是Spring的一個核心項目,它是一個功能強大且高度可定制的認證和訪問控制框架。它提供了認證和授權(quán)功能以及抵御常見的攻擊,它已經(jīng)成為保護基于spring的應(yīng)用程序的事實標準
    2022-11-11

最新評論

晋江市| 外汇| 灌阳县| 遂宁市| 香格里拉县| 县级市| 冀州市| 伊宁市| 赤峰市| 介休市| 霍邱县| 郯城县| 黎川县| 磐石市| 哈密市| 道真| 大新县| 德保县| 广灵县| 子洲县| 莫力| 贞丰县| 四川省| 静宁县| 德庆县| 大兴区| 遂溪县| 江孜县| 略阳县| 迭部县| 尉犁县| 革吉县| 台山市| 泸定县| 贵港市| 黔江区| 乐陵市| 沙田区| 马公市| 微山县| 乌拉特中旗|