AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

不知道 Maven 的這個特性,你遲早要被坑

來源: 責編: 時間:2024-01-09 08:52:41 244觀看
導讀Apache Maven 是一個自動化構建工具,廣泛應用于 Java 項目,它可以幫助我們管理項目的構建、報告和文檔,但最重要的功能之一是依賴管理。只要正確配置了項目的依賴,Maven 在編譯的時候就可以自動下載項目所需的所有依賴項

Apache Maven 是一個自動化構建工具,廣泛應用于 Java 項目,它可以幫助我們管理項目的構建、報告和文檔,但最重要的功能之一是依賴管理。4bM28資訊網——每日最新資訊28at.com

只要正確配置了項目的依賴,Maven 在編譯的時候就可以自動下載項目所需的所有依賴項。但是如果我們使用不當,依賴管理可能會引入問題,特別是當我們使用如 [2.3.0,)  這樣的版本范圍指定的時候。4bM28資訊網——每日最新資訊28at.com

這樣的寫法意味著依賴的版本要大于等于 2.3.0,但不指定最大版本,maven 在編譯的時候會自動去查詢當前最新的版本,這就很大程度上可能會引入了最新的版本,導致項目依賴不固定,從而引發編譯異常。4bM28資訊網——每日最新資訊28at.com

Maven 版本范圍介紹

在 Maven 的依賴管理中,我們可以為依賴項指定一個版本范圍。例如,[1.0,2.0]意味著版本范圍介于 1.0 和 2.0 之間(包含)。[1.0,2.0) 意味著版本范圍介于 1.0 和 2.0 之間,但不包含 2.0。[2.3.0,)則表明我們接受 2.3.0 或更高的版本,此時我們并沒有指定范圍的上限,而是讓 Maven 選擇滿足這個條件的最新版本。4bM28資訊網——每日最新資訊28at.com

圖片圖片4bM28資訊網——每日最新資訊28at.com

版本范圍帶來的問題

對于某些類型的項目,如開源項目,使用范圍可能是合理的,因為開源項目通常希望能夠方便地采用最新的庫和工具。4bM28資訊網——每日最新資訊28at.com

然而,對于需要保證穩定性的商業項目,使用無上限的版本范圍可能導致問題。每次構建項目時,Maven 都會嘗試獲取新的依賴版本。如果新版本引入了不兼容的更改,可能導致編譯錯誤,甚至更微妙的運行時錯誤。4bM28資訊網——每日最新資訊28at.com

由于同一項目的不同開發者可能在不同的時間點執行編譯,他們可能獲得的依賴版本不同,從而導致難以追蹤的問題。4bM28資訊網——每日最新資訊28at.com

而作為公司內部的軟件,很多時候我們是需要保證穩定的,所以就很不適合采用范圍來配置 maven 版本了。4bM28資訊網——每日最新資訊28at.com

如下所示,我這邊原本的配置 fastjson 的版本是 1.2.79,從右側的 maven 依賴中我們可以看到,項目中下載的 fastjson 的版本是 1.2.79。4bM28資訊網——每日最新資訊28at.com

圖片圖片4bM28資訊網——每日最新資訊28at.com

如果此時我把 fastjson 的版本調整成 [1.2.79,) 的形式,則右側的依賴就會變成一個最新的 2.0.45 這個版本。4bM28資訊網——每日最新資訊28at.com

圖片圖片4bM28資訊網——每日最新資訊28at.com

image-20240107150146630這種寫法除了依賴中會獲取到最新的版本之外,其實 maven 是把整個范圍的 jar 都下載下來了,通過本地的資源倉庫我們可以看到只要版本在這個范圍之內,都會被下載下來。4bM28資訊網——每日最新資訊28at.com

圖片圖片4bM28資訊網——每日最新資訊28at.com

另外如果一些軟件自身的升級是向下兼容的,那么使用范圍版本配置可能沒什么關系,但是如果一些軟件的版本不是向下兼容的,那么使用范圍版本配置那肯定是有問題的。4bM28資訊網——每日最新資訊28at.com

特別是隨著 JDK 版本的升級,很多新的依賴的開發和編譯可能是采用新版本的 JDK 來實現的,這個時候如果我們自身項目的 JDK 還是舊版本的話,就會出現項目編譯不通過的問題了,會提示 JDK 版本不對,這種在編譯的時候往往會出現 Java – Unsupported class file major version  異常。4bM28資訊網——每日最新資訊28at.com

所以下次如果出現這種異常,可以考慮看看是不是 maven 版本依賴配置問題。4bM28資訊網——每日最新資訊28at.com

如何解決明確版本問題

最簡單和最直接的方法是將依賴的版本明確指定,而不是提供一個范圍。4bM28資訊網——每日最新資訊28at.com

這樣,所有開發者和構建服務器都將使用相同的依賴版本。當我們決定升級依賴時,可以測試新版本,對代碼進行必要的更改,然后在進行升級。4bM28資訊網——每日最新資訊28at.com

Maven 也支持所謂的版本管理(version management)。在父 POM 中,我們可以用 <dependencyManagement> 元素定義一個或多個依賴項的版本,然后在項目的各個模塊中引用它們,無需在每個模塊中指定版本。這種方法對于確保項目的各個部分使用相同的依賴版本非常有效。4bM28資訊網——每日最新資訊28at.com

結論

雖然范圍版本提供了尋找需要的庫的新版本的方便,但大范圍的未定版本和更新可能會引入不希望的結果,這些結果可能導致編譯異?;蛘哌\行時錯誤。4bM28資訊網——每日最新資訊28at.com

我們需要使用正確的方法來管理和鎖定我們的依賴,避免這些困擾,并保持我們的項目的穩定性。4bM28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-58970-0.html不知道 Maven 的這個特性,你遲早要被坑

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python 的 Shutil 模塊,你都了解多少?

下一篇: 如何用Rust架構復雜系統?

標簽:
  • 熱門焦點
  • 官方承諾:K60至尊版將會首批升級MIUI 15

    全新的MIUI 15今天也有了消息,在官宣了K60至尊版將會搭載天璣9200+處理器和獨顯芯片X7的同時,Redmi給出了官方承諾,K60至尊重大更新首批升級,會首批推送MIUI 15。也就是說雖然
  • iPhone賣不動了!蘋果股價創年內最大日跌幅:市值一夜蒸發萬億元

    8月5日消息,今天凌晨美股三大指數高開低走集體收跌,道指跌0.41%;納指跌0.36%;標普500指數跌0.52%。熱門科技股也都變化極大,其中蘋果報181.99美元,跌4.8%,創
  • Automa-通過連接塊來自動化你的瀏覽器

    1、前言通過瀏覽器插件可實現自動化腳本的錄制與編寫,具有代表性的工具就是:Selenium IDE、Katalon Recorder,對于簡單的業務來說可快速實現自動化的上手工作。Selenium IDEKat
  • 微信語音大揭秘:為什么禁止轉發?

    大家好,我是你們的小米。今天,我要和大家聊一個有趣的話題:為什么微信語音不可以轉發?這是一個我們經常在日常使用中遇到的問題,也是一個讓很多人好奇的問題。讓我們一起來揭開這
  • Python異步IO編程的進程/線程通信實現

    這篇文章再講3種方式,同時講4中進程間通信的方式一、 Python 中線程間通信的實現方式共享變量共享變量是多個線程可以共同訪問的變量。在Python中,可以使用threading模塊中的L
  • JVM優化:實戰OutOfMemoryError異常

    一、Java堆溢出堆內存中主要存放對象、數組等,只要不斷地創建這些對象,并且保證 GC Roots 到對象之間有可達路徑來避免垃 圾收集回收機制清除這些對象,當這些對象所占空間超過
  • 華為Mate 60系列用上可變靈動島:正式版體驗將會更出色

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • iQOO Neo8系列今日官宣:首發天璣9200+ 全球安卓最強芯!

    在昨日舉行的的聯發科新一代旗艦芯片天璣9200+的發布會上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品將全球首發搭載這款當前性能最強大的移動平臺
  • 蘋果140W USB-C充電器:采用氮化鎵技術

    據10 月 30 日 9to5 Mac 消息報道,當蘋果推出新的 MacBook Pro 2021 時,該公司還推出了新的 140W USB-C 充電器,附贈在 MacBook Pro 16 英寸機型的盒子里,也支
Top