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

當(dāng)前位置:首頁 > 科技  > 軟件

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

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

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

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

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

Maven 版本范圍介紹

在 Maven 的依賴管理中,我們可以為依賴項(xiàng)指定一個版本范圍。例如,[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 選擇滿足這個條件的最新版本。xKr28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片xKr28資訊網(wǎng)——每日最新資訊28at.com

版本范圍帶來的問題

對于某些類型的項(xiàng)目,如開源項(xiàng)目,使用范圍可能是合理的,因?yàn)殚_源項(xiàng)目通常希望能夠方便地采用最新的庫和工具。xKr28資訊網(wǎng)——每日最新資訊28at.com

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

由于同一項(xiàng)目的不同開發(fā)者可能在不同的時間點(diǎn)執(zhí)行編譯,他們可能獲得的依賴版本不同,從而導(dǎo)致難以追蹤的問題。xKr28資訊網(wǎng)——每日最新資訊28at.com

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

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

圖片圖片xKr28資訊網(wǎng)——每日最新資訊28at.com

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

圖片圖片xKr28資訊網(wǎng)——每日最新資訊28at.com

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

圖片圖片xKr28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

如何解決明確版本問題

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

這樣,所有開發(fā)者和構(gòu)建服務(wù)器都將使用相同的依賴版本。當(dāng)我們決定升級依賴時,可以測試新版本,對代碼進(jìn)行必要的更改,然后在進(jìn)行升級。xKr28資訊網(wǎng)——每日最新資訊28at.com

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

結(jié)論

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

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

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

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

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

下一篇: 如何用Rust架構(gòu)復(fù)雜系統(tǒng)?

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 石頭智能洗地機(jī)A10 Plus體驗(yàn):雙向自清潔治好了我的懶癌

    一、前言和介紹專為家庭請假懶人而生的石頭科技在近日又帶來了自己的全新旗艦新品,石頭智能洗地機(jī)A10 Plus。從這個產(chǎn)品名上就不難看出,這次石頭推出的并不是常見的掃地機(jī)器
  • 轎車從天而降電動車主被撞身亡 超速搶道所致:現(xiàn)場視頻讓網(wǎng)友吵翻

    近日,上海青浦區(qū)法院判決轎車從天而降電動車主被撞身亡案,轎車車主被判有期徒刑一年。案件顯示當(dāng)時男子駕駛轎車在上海某路段行駛,前車忽然轉(zhuǎn)彎提速超車,
  • 從 Pulsar Client 的原理到它的監(jiān)控面板

    背景前段時間業(yè)務(wù)團(tuán)隊(duì)偶爾會碰到一些 Pulsar 使用的問題,比如消息阻塞不消費(fèi)了、生產(chǎn)者消息發(fā)送緩慢等各種問題。雖然我們有個監(jiān)控頁面可以根據(jù) topic 維度查看他的發(fā)送狀態(tài),
  • Flowable工作流引擎的科普與實(shí)踐

    一.引言當(dāng)我們在日常工作和業(yè)務(wù)中需要進(jìn)行各種審批流程時,可能會面臨一系列技術(shù)和業(yè)務(wù)上的挑戰(zhàn)。手動處理這些審批流程可能會導(dǎo)致開發(fā)成本的增加以及業(yè)務(wù)復(fù)雜度的上升。在這
  • 破圈是B站頭上的緊箍咒

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準(zhǔn)追劇女孩們的古偶劇集,2021年有優(yōu)酷的《山河令》,2022年有愛奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創(chuàng) 作者|程心 羅輯2023年之前,對于自己的&ldquo;今天&rdquo;,百度也很迷茫。&ldquo;新業(yè)務(wù)到 2022 年底還是 0,希望 2023 年出來一個 1。&rdquo;這是2022年底,李彥宏
  • 華為Mate 60保護(hù)殼曝光:碩大后置相機(jī)模組 凸起程度有驚喜

    這段時間以來,關(guān)于華為新旗艦的爆料日漸密集。據(jù)此前多方爆料,今年華為將開始恢復(fù)一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • 2納米決戰(zhàn)2025

    集微網(wǎng)報道 從三強(qiáng)爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進(jìn)制程領(lǐng)先地位的英特爾,甚至初成立不久的新
  • 聯(lián)想小新Pad Pro 12.6將要推出,搭載高通驍龍 870 處理器

    聯(lián)想小新Pad Pro 12.6將于秋季新品會上推出,官方按照慣例直接在發(fā)布會前給出了機(jī)型的所有參數(shù)。聯(lián)想小新 Pad Pro 12.6 將搭載高通驍龍 870 處理器,重量為 5
Top 主站蜘蛛池模板: 惠东县| 石门县| 黄陵县| 威海市| 绥江县| 施秉县| 宜君县| 樟树市| 越西县| 六盘水市| 嫩江县| 凯里市| 冕宁县| 成安县| 子洲县| 泗洪县| 沐川县| 济源市| 昂仁县| 和硕县| 溆浦县| 木兰县| 开封市| 界首市| 章丘市| 衢州市| 张家港市| 宁陵县| 崇义县| 南安市| 睢宁县| 琼中| 盐津县| 平顺县| 武功县| 昔阳县| 巫溪县| 伊宁市| 富裕县| 四平市| 邻水|