亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

maven的升級(jí)版maven-mvnd的使用小結(jié)

 更新時(shí)間:2025年01月02日 11:15:40   作者:流年五十前  
maven-mvnd是Maven的升級(jí)版,通過將構(gòu)建過程放在守護(hù)進(jìn)程中,實(shí)現(xiàn)了更快的編譯速度和更低的內(nèi)存占用,下面就來介紹一下如何使用,感興趣的可以了解一下

前言

在Java代碼編譯和構(gòu)建領(lǐng)域里面,最常見的是ant、maven、gradle。這三個(gè)編譯工具都有各自強(qiáng)大的功能。目前ant基本已經(jīng)被時(shí)代拋棄,主流的工具還是maven和gradle,但是gradle的服務(wù)領(lǐng)域大部分還是在Android開發(fā),在服務(wù)端開發(fā)方面,maven任然是主流。
但是maven也還是有很多的不足,比如基于xml格式的配置,相對(duì)應(yīng)gradle來說,靈活度不夠。另外編譯時(shí)速度慢,內(nèi)存占用高等情況。為了解決編譯速度的問題,有一個(gè)maven-mvnd的工具誕生了。

一、什么是maven-mvnd

maven-mvnd和maven沒有直接的關(guān)系,它們是兩個(gè)完全獨(dú)立的的項(xiàng)目。但是maven-mvnd是完全兼容maven的所有特征的,使用方式和命令操作完全和maven一樣。
它最大的特點(diǎn)就是編譯速度快,占用內(nèi)存少,根據(jù)官方的描述可以總結(jié)為下面幾點(diǎn):

  • mvnd 嵌入了 Maven(因此無需單獨(dú)安裝 Maven)。
  • 實(shí)際構(gòu)建發(fā)生在一個(gè)長(zhǎng)期存在的后臺(tái)進(jìn)程中,也就是守護(hù)進(jìn)程。
  • 一個(gè)守護(hù)程序?qū)嵗梢蕴幚韥碜?mvnd 客戶端的多個(gè)連續(xù)請(qǐng)求。
  • mvnd 客戶端是使用 GraalVM 構(gòu)建的本機(jī)可執(zhí)行文件。與啟動(dòng)傳統(tǒng) JVM 相比,它啟動(dòng)速度更快,占用的內(nèi)存更少。
  • 如果沒有空閑守護(hù)進(jìn)程來為構(gòu)建請(qǐng)求提供服務(wù),則可以并行生成多個(gè)守護(hù)進(jìn)程。
  • 用于運(yùn)行實(shí)際構(gòu)建的 JVM 不需要為每個(gè)構(gòu)建重新開始。
  • 保存 Maven 插件類的類加載器緩存在多個(gè)構(gòu)建中。因此,插件 jar 只需讀取和解析一次。不緩存 Maven 插件的 SNAPSHOT 版本。
  • JVM 內(nèi)部的實(shí)時(shí) (JIT) 編譯器生成的本機(jī)代碼也會(huì)保留。與普通 Maven 相比,JIT 編譯花費(fèi)的時(shí)間更少。在重復(fù)生成期間,JIT 優(yōu)化代碼會(huì)立即可用。這不僅適用于來自 Maven 插件和 Maven Core 的代碼,也適用于來自 JDK 本身的所有代碼。

看到上面的解釋,感覺就一個(gè)字:牛B。下面我們來看看如何使用

二、maven-mvnd安裝

maven-mvnd的安裝很簡(jiǎn)單,和maven的安裝差不多。
首先我們?nèi)ハ螺dmaven-mvnd,點(diǎn)擊這里進(jìn)行下載

選擇合適的版本以及操作系統(tǒng)進(jìn)行下載

  • 下載后然后解壓到相關(guān)目錄
  • 配置環(huán)境變量,在PATH中加入{maven-mvnd-path}/bin
  • 如果在Linux或者M(jìn)ac系統(tǒng)下,需要讓環(huán)境變量生效

然后在控制臺(tái)運(yùn)行命令:

mvnd -v

如果有如下輸出,表示安裝成功:

mvnd native client 0.7.1-darwin-amd64 (97c587c11383a67b5bd0ff8388bd94c694b91c1e)
Terminal: org.jline.terminal.impl.PosixSysTerminal with pty org.jline.terminal.impl.jansi.osx.OsXNativePty
Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
Maven home: /Users/lihao/.sdkman/candidates/mvnd/current/mvn
Java version: 17.0.9, vendor: Oracle Corporation, runtime: /Users/lihao/java/graalvm-jdk-17.0.9+11.1/Contents/Home
Default locale: zh_CN_#Hans, platform encoding: UTF-8
OS name: "mac os x", version: "12.1", arch: "x86_64", family: "mac"

不同的操作系統(tǒng)會(huì)有不同的輸出結(jié)果

注意:

  • Windows下面可能會(huì)報(bào)VCRUNTIME140.dll was not found的錯(cuò)誤,解決辦法是安裝vc_redist.x64.exe,點(diǎn)擊鏈接下載
  • MacOS系統(tǒng)下可能會(huì)報(bào)安全問題,在控制臺(tái)下運(yùn)行如下命令進(jìn)行解決:
xattr -r -d com.apple.quarantine mvnd-x.y.z-darwin-amd64

將mvnd-x.y.z-darwin-amd64替換成你實(shí)際的目錄

三、maven-mvnd打包測(cè)試

安裝成功后,我們現(xiàn)在來看看如何使用maven-mvnd操作以及打包的情況。

普通打包測(cè)試

首先我們新建一個(gè)普通springboot項(xiàng)目:

我們先使用maven來打包,而且我們連續(xù)打包三次,運(yùn)行打包命令:

mvn clean -DskipTests package

第一次打包時(shí)間結(jié)果如下:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  4.202 s
[INFO] Finished at: 2024-02-23T17:54:47+08:00

第二次打包時(shí)間結(jié)果如下:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.811 s
[INFO] Finished at: 2024-02-23T17:55:54+08:00

第三次打包時(shí)間結(jié)果如下:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.779 s
[INFO] Finished at: 2024-02-23T17:56:14+08:00

三次時(shí)間平均值大概在3.9秒左右。

下面我們來使用maven-mvnd來打包,maven-mvnd的使用和maven一樣,只需要把mvn命令替換成mvnd即可,運(yùn)行打包命令,同樣是三次:

mvnd clean -DskipTests package 

第一次打包時(shí)間結(jié)果如下:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.026 s (Wall Clock)
[INFO] Finished at: 2024-02-23T17:58:21+08:00

第二次打包時(shí)間結(jié)果如下:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.541 s (Wall Clock)
[INFO] Finished at: 2024-02-23T17:58:51+08:00

第三次打包時(shí)間結(jié)果如下:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.523 s (Wall Clock)
[INFO] Finished at: 2024-02-23T17:59:07+08:00

可以看到使用maven-mvnd進(jìn)行三次打包,每次消耗的時(shí)間大概在1.7秒左右。相對(duì)應(yīng)maven來說時(shí)間是提升了不少

native打包測(cè)試

下面我們來測(cè)試springboot的native打包。還是上面的項(xiàng)目,先使用native打包:

mvn clean -DskipTests native:compile -Pnative

第一次耗時(shí):

[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:53 min
[INFO] Finished at: 2024-02-23T20:18:16+08:00
[INFO] ------------------------------------------------------------------------

第二次耗時(shí):

[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:30 min
[INFO] Finished at: 2024-02-23T20:21:02+08:00
[INFO] ------------------------------------------------------------------------

第三次耗時(shí):

[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:23 min
[INFO] Finished at: 2024-02-23T20:22:45+08:00
[INFO] ------------------------------------------------------------------------

平均耗時(shí)大概01:34 min。下面我們使用mvnd

同樣執(zhí)行命令:

mvnd clean -DskipTests native:compile -Pnative

第一次耗時(shí):

[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:26 min (Wall Clock)
[INFO] Finished at: 2024-02-23T20:25:35+08:00
[INFO] ------------------------------------------------------------------------

第二次耗時(shí):

[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:28 min (Wall Clock)
[INFO] Finished at: 2024-02-23T20:27:12+08:00
[INFO] ------------------------------------------------------------------------

第三次耗時(shí):

[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:33 min (Wall Clock)
[INFO] Finished at: 2024-02-23T20:31:58+08:00
[INFO] ------------------------------------------------------------------------

平均耗時(shí)大概01:28 min。

可以看出差異性不是很大,比較native打包消耗性能的不在maven上,而是GraalVM平臺(tái)來決定

大型項(xiàng)目編譯測(cè)試

下面我們使用【vertx-examples】這個(gè)項(xiàng)目來做測(cè)試

我們先將項(xiàng)目clone下來:

git clone https://github.com/vert-x3/vertx-examples.git

然后使用maven編譯項(xiàng)目:

mvn clean -DskipTests compile

先去掉Downloading階段的編譯,保證本地都有相關(guān)的依賴包

使用maven編譯耗時(shí):

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for vertx-examples 4.5.0:
[INFO] 
[INFO] core-examples ...................................... SUCCESS [  1.945 s]
[INFO] opentracing-examples ............................... SUCCESS [  0.361 s]
[INFO] zipkin-examples .................................... SUCCESS [  0.216 s]
[INFO] web-examples ....................................... SUCCESS [  3.285 s]
[INFO] web-client-examples ................................ SUCCESS [  0.180 s]
[INFO] rxjava-2-examples .................................. SUCCESS [  0.557 s]
[INFO] rxjava-3-examples .................................. SUCCESS [  0.473 s]
[INFO] unit-examples ...................................... SUCCESS [  0.048 s]
[INFO] metrics-examples ................................... SUCCESS [  0.052 s]
[INFO] micrometer-metrics-examples ........................ SUCCESS [  0.096 s]
[INFO] mail-examples ...................................... SUCCESS [  0.074 s]
[INFO] service-proxy-examples ............................. SUCCESS [  0.001 s]
[INFO] service-provider ................................... SUCCESS [  0.172 s]
[INFO] service-consumer ................................... SUCCESS [  0.075 s]
[INFO] sockjs-proxies-examples ............................ SUCCESS [  0.133 s]
[INFO] spring-examples .................................... SUCCESS [  0.001 s]
[INFO] spring-verticle-factory ............................ SUCCESS [  0.137 s]
[INFO] redis-examples ..................................... SUCCESS [  0.050 s]
[INFO] consul-examples .................................... SUCCESS [  0.042 s]
[INFO] mongo-examples ..................................... SUCCESS [  0.053 s]
[INFO] sql-client-examples ................................ SUCCESS [  0.226 s]
[INFO] shell-examples ..................................... SUCCESS [  0.167 s]
[INFO] amqp-proton-examples ............................... SUCCESS [  0.105 s]
[INFO] camel-bridge-examples .............................. SUCCESS [  0.298 s]
[INFO] circuit-breaker-examples ........................... SUCCESS [  0.054 s]
[INFO] vertx-examples ..................................... SUCCESS [  0.001 s]
[INFO] service-discovery-examples ......................... SUCCESS [  0.075 s]
[INFO] mqtt-examples ...................................... SUCCESS [  0.089 s]
[INFO] grpc-examples ...................................... SUCCESS [  3.994 s]
[INFO] kafka-examples ..................................... SUCCESS [  0.137 s]
[INFO] kotlin-coroutines-examples ......................... SUCCESS [  4.717 s]
[INFO] junit5-examples .................................... SUCCESS [  0.065 s]
[INFO] Web Api Service example ............................ SUCCESS [  0.211 s]
[INFO] cassandra-examples ................................. SUCCESS [  0.108 s]
[INFO] web-graphql-examples ............................... SUCCESS [  0.076 s]
[INFO] jpms-examples ...................................... SUCCESS [  0.225 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  18.843 s
[INFO] Finished at: 2024-02-23T21:27:47+08:00
[INFO] ------------------------------------------------------------------------

然后我們使用maven-mvnd來編譯:

[INFO] Reactor Summary for vertx-examples 4.5.0:
[INFO] 
[INFO] core-examples ...................................... SUCCESS [  0.730 s]
[INFO] opentracing-examples ............................... SUCCESS [  0.314 s]
[INFO] zipkin-examples .................................... SUCCESS [  0.375 s]
[INFO] web-examples ....................................... SUCCESS [  3.349 s]
[INFO] web-client-examples ................................ SUCCESS [  0.431 s]
[INFO] rxjava-2-examples .................................. SUCCESS [  1.066 s]
[INFO] rxjava-3-examples .................................. SUCCESS [  1.045 s]
[INFO] unit-examples ...................................... SUCCESS [  0.160 s]
[INFO] metrics-examples ................................... SUCCESS [  0.133 s]
[INFO] micrometer-metrics-examples ........................ SUCCESS [  0.200 s]
[INFO] mail-examples ...................................... SUCCESS [  0.189 s]
[INFO] service-proxy-examples ............................. SUCCESS [  0.003 s]
[INFO] service-provider ................................... SUCCESS [  0.678 s]
[INFO] service-consumer ................................... SUCCESS [  0.185 s]
[INFO] sockjs-proxies-examples ............................ SUCCESS [  0.395 s]
[INFO] spring-examples .................................... SUCCESS [  0.002 s]
[INFO] spring-verticle-factory ............................ SUCCESS [  0.268 s]
[INFO] redis-examples ..................................... SUCCESS [  0.182 s]
[INFO] consul-examples .................................... SUCCESS [  0.071 s]
[INFO] mongo-examples ..................................... SUCCESS [  0.091 s]
[INFO] sql-client-examples ................................ SUCCESS [  0.829 s]
[INFO] shell-examples ..................................... SUCCESS [  0.444 s]
[INFO] amqp-proton-examples ............................... SUCCESS [  0.289 s]
[INFO] camel-bridge-examples .............................. SUCCESS [  0.629 s]
[INFO] circuit-breaker-examples ........................... SUCCESS [  0.111 s]
[INFO] vertx-examples ..................................... SUCCESS [  0.003 s]
[INFO] service-discovery-examples ......................... SUCCESS [  0.177 s]
[INFO] mqtt-examples ...................................... SUCCESS [  0.247 s]
[INFO] grpc-examples ...................................... SUCCESS [  5.308 s]
[INFO] kafka-examples ..................................... SUCCESS [  0.427 s]
[INFO] kotlin-coroutines-examples ......................... SUCCESS [  1.570 s]
[INFO] junit5-examples .................................... SUCCESS [  0.079 s]
[INFO] Web Api Service example ............................ SUCCESS [  0.752 s]
[INFO] cassandra-examples ................................. SUCCESS [  0.259 s]
[INFO] web-graphql-examples ............................... SUCCESS [  0.290 s]
[INFO] jpms-examples ...................................... SUCCESS [  0.221 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  5.778 s (Wall Clock)
[INFO] Finished at: 2024-02-23T21:29:11+08:00
[INFO] ------------------------------------------------------------------------

可以看出在復(fù)雜的項(xiàng)目編譯時(shí),maven-mvnd的優(yōu)勢(shì)還是很大。

總結(jié)

maven-mvnd的使用方式和maven沒有多大區(qū)別,直接使用mvnd命令替換mvn即可。

小項(xiàng)目編譯時(shí)這兩個(gè)的差異是很小的,但在大型項(xiàng)目的情況下,maven-mvnd的優(yōu)勢(shì)還是很明顯。

maven-mvnd主要是對(duì)Java代碼編譯做性能優(yōu)化。但對(duì)第三方的插件應(yīng)該不會(huì)有性能提升。因?yàn)椴寮膱?zhí)行效率還是依賴于插件本身的執(zhí)行邏輯。

到此這篇關(guān)于maven的升級(jí)版maven-mvnd的使用小結(jié)的文章就介紹到這了,更多相關(guān)maven-mvnd使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java自帶定時(shí)任務(wù)ScheduledThreadPoolExecutor實(shí)現(xiàn)定時(shí)器和延時(shí)加載功能

    Java自帶定時(shí)任務(wù)ScheduledThreadPoolExecutor實(shí)現(xiàn)定時(shí)器和延時(shí)加載功能

    今天小編就為大家分享一篇關(guān)于Java自帶定時(shí)任務(wù)ScheduledThreadPoolExecutor實(shí)現(xiàn)定時(shí)器和延時(shí)加載功能,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Spring Security靈活的PasswordEncoder加密方式解析

    Spring Security靈活的PasswordEncoder加密方式解析

    這篇文章主要介紹了Spring Security靈活的PasswordEncoder加密方式解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • SpringBoot中AOP的動(dòng)態(tài)匹配和靜態(tài)匹配詳解

    SpringBoot中AOP的動(dòng)態(tài)匹配和靜態(tài)匹配詳解

    這篇文章主要介紹了SpringBoot中AOP的動(dòng)態(tài)匹配和靜態(tài)匹配詳解,在創(chuàng)建代理的時(shí)候?qū)δ繕?biāo)類的每個(gè)連接點(diǎn)使用靜態(tài)切點(diǎn)檢查,如果僅通過靜態(tài)切點(diǎn)檢查就可以知道連接點(diǎn)是不匹配的,則在運(yùn)行時(shí)就不再進(jìn)行動(dòng)態(tài)檢查了,需要的朋友可以參考下
    2023-09-09
  • 使用Netty解決TCP粘包和拆包問題過程詳解

    使用Netty解決TCP粘包和拆包問題過程詳解

    這篇文章主要介紹了使用Netty解決TCP粘包和拆包問題過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • IDEA?2019.2.3破解激活教程(親測(cè)有效)

    IDEA?2019.2.3破解激活教程(親測(cè)有效)

    這篇文章主要介紹了IDEA?2019.2.3破解激活教程(親測(cè)有效),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • SpringBoot+Vue前后端分離實(shí)現(xiàn)請(qǐng)求api跨域問題

    SpringBoot+Vue前后端分離實(shí)現(xiàn)請(qǐng)求api跨域問題

    這篇文章主要介紹了SpringBoot+Vue前后端分離實(shí)現(xiàn)請(qǐng)求api跨域問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 全面剖析java中的注解(Annotation)

    全面剖析java中的注解(Annotation)

    一個(gè)詞就可以描述注解,那就是元數(shù)據(jù),即一種描述數(shù)據(jù)的數(shù)據(jù)。所以,可以說注解就是源代碼的元數(shù)據(jù)。文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Java對(duì)象創(chuàng)建內(nèi)存案例解析

    Java對(duì)象創(chuàng)建內(nèi)存案例解析

    這篇文章主要介紹了Java對(duì)象創(chuàng)建內(nèi)存案例解析,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • springboot添加AOP日志配置詳解

    springboot添加AOP日志配置詳解

    這篇文章主要介紹了springboot添加AOP日志配置詳解,日志是一種在軟件開發(fā)中常用的技術(shù),用于記錄和跟蹤應(yīng)用程序的運(yùn)行過程,通過AOP日志,開發(fā)人員可以實(shí)時(shí)監(jiān)控應(yīng)用程序的行為,包括方法的調(diào)用、參數(shù)的傳遞和返回值的獲取等,需要的朋友可以參考下
    2023-10-10
  • springboot使用JdbcTemplate完成對(duì)數(shù)據(jù)庫(kù)的增刪改查功能

    springboot使用JdbcTemplate完成對(duì)數(shù)據(jù)庫(kù)的增刪改查功能

    這篇文章主要介紹了springboot使用JdbcTemplate完成對(duì)數(shù)據(jù)庫(kù)的增刪改查功能,需要的朋友可以參考下
    2017-12-12

最新評(píng)論