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

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

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

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

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

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

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

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

版本范圍帶來的問題

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

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

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

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

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

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

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

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

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

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

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

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

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

如何解決明確版本問題

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

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

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

結論

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

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

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

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

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

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

標簽:
  • 熱門焦點
  • 5月安卓手機好評榜:魅族20 Pro奪冠

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年5月1日至5月31日,僅限國內市場。第一名:魅族20 Pro好評率:97.50%不得不感慨魅族老品牌還
  • 帥氣純真少年!日本最帥初中生選美冠軍出爐

    日本第一帥哥初一生選美大賽冠軍現已正式出爐,冠軍是來自千葉縣的宗田悠良。日本一直熱衷于各種選美大賽,從&ldquo;最美JK&rdquo;起到&ldquo;最美女星&r
  • 摸魚心法第一章——和配置文件說拜拜

    為了能摸魚我們團隊做了容器化,但是帶來的問題是服務配置文件很麻煩,然后大家在群里進行了“親切友好”的溝通圖片圖片圖片圖片對比就對比,簡單對比下獨立配置中心和k8s作為配
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會涉及各種各樣的安全任務,包括但不限于:開發某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • Temu起訴SHEIN,跨境電商戰事升級

    來源 | 伯虎財經(bohuFN)作者 | 陳平安日前據外媒報道,拼多多旗下跨境電商平臺Temu正對競爭對手SHEIN提起新訴訟,訴狀稱Shein&ldquo;利用市場支配力量強迫服裝廠商與之簽訂獨家
  • 網傳小米汽車開始篩選交付中心 建筑面積不低于3000平方米

    7月7日消息,近日有微博網友@長三角行健者爆料稱,據經銷商集團反饋,小米汽車目前已經開始了交付中心的篩選工作,要求候選場地至少有120個車位,建筑不能低
  • 2納米決戰2025

    集微網報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領先地位的英特爾,甚至初成立不久的新
  • 三星推出Galaxy Tab S9系列平板電腦以及Galaxy Watch6系列智能手表

    2023年7月26日,三星電子正式發布了Galaxy Z Flip5與Galaxy Z Fold5。除此之外,Galaxy Tab S9系列平板電腦以及三星Galaxy Watch6系列智能手表也同期
  • 2299元起!iQOO Pad明晚首銷:性能最強天璣平板

    5月23日,iQOO如期舉行了新品發布會,除了首發安卓最強旗艦處理器的iQOO Neo8系列新機外,還在發布會上推出了旗下首款平板電腦——iQOO Pad,其最大的賣點
Top 主站蜘蛛池模板: 怀来县| 黔南| 通化县| 吕梁市| 涟源市| 报价| 阳城县| 鄂托克旗| 英吉沙县| 鹰潭市| 西充县| 平遥县| 肇州县| 大荔县| 霍州市| 湘潭市| 灵台县| 庆元县| 东平县| 清涧县| 临安市| 安宁市| 博客| 贵定县| 江口县| 酒泉市| 禹城市| 定南县| 呼和浩特市| 云龙县| 绥宁县| 衡阳市| 印江| 福清市| 密云县| 隆昌县| 隆安县| 陵川县| 班戈县| 吴忠市| 福建省|