日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

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

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

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

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

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

這樣的寫法意味著依賴的版本要大于等于 2.3.0,但不指定最大版本,maven 在編譯的時候會自動去查詢當前最新的版本,這就很大程度上可能會引入了最新的版本,導致項目依賴不固定,從而引發編譯異常。GpV28資訊網——每日最新資訊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 選擇滿足這個條件的最新版本。GpV28資訊網——每日最新資訊28at.com

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

版本范圍帶來的問題

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

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

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

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

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

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

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

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

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

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

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

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

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

如何解決明確版本問題

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

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

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

結論

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

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

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

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

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

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

標簽:
  • 熱門焦點
  • 天貓精靈Sound Pro體驗:智能音箱沒有音質?來聽聽我的

    這幾年除了手機作為智能生活終端最主要的核心之外,第二個可以成為中心點的產品是什么?——是智能音箱。 手機在執行命令的時候有兩種操作方式,手和智能語音助手,而智能音箱只
  • 三言兩語說透設計模式的藝術-簡單工廠模式

    一、寫在前面工廠模式是最常見的一種創建型設計模式,通常說的工廠模式指的是工廠方法模式,是使用頻率最高的工廠模式。簡單工廠模式又稱為靜態工廠方法模式,不屬于GoF 23種設計
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生
  • 消息稱小米汽車開始篩選交付中心:需至少120個車位

    IT之家 7 月 7 日消息,日前,有微博簡介為“汽車行業從業者、長三角一體化擁護者”的微博用戶 @長三角行健者 發文表示,據經銷商集團反饋,小米汽車目前
  • 2納米決戰2025

    集微網報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • iQOO 11S或7月上市:搭載“雞血版”驍龍8Gen2 史上最強5G Soc

    去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,iQOO 11不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競屏,同時在快充
  • 引領旗艦級影像能力向中端機普及 OPPO K11 系列發布 1799 元起

    7月25日,OPPO正式發布K系列新品—— OPPO K11 。此次 K11 在中端手機市場長期被忽視的影像板塊發力,突破性地搭載索尼 IMX890 旗艦大底主攝,支持 OIS
  • 蘋果140W USB-C充電器:采用氮化鎵技術

    據10 月 30 日 9to5 Mac 消息報道,當蘋果推出新的 MacBook Pro 2021 時,該公司還推出了新的 140W USB-C 充電器,附贈在 MacBook Pro 16 英寸機型的盒子里,也支
  • 中關村論壇11月25日開幕,15位諾獎級大咖將發表演講

    11月18日,記者從2022中關村論壇新聞發布會上獲悉,中關村論壇將于11月25至30日在京舉行。本屆中關村論壇由科學技術部、國家發展改革委、工業和信息化部、國務
Top 主站蜘蛛池模板: 绵竹市| 金堂县| 磐石市| 虎林市| 昌乐县| 庆城县| 曲周县| 万年县| 清涧县| 略阳县| 蕉岭县| 丰城市| 万荣县| 读书| 元氏县| 昭苏县| 仙游县| 台北市| 项城市| 当雄县| 封开县| 轮台县| 农安县| 抚远县| 金堂县| 天等县| 乃东县| 正蓝旗| 绍兴县| 钟山县| 宜宾县| 波密县| 平陆县| 邵阳市| 鹿邑县| 娱乐| 柯坪县| 梁河县| 霞浦县| 郓城县| 安新县|