問題解決:嘗試解決maven依賴找不到的n種姿勢
問題場景
公司的原倉庫出了問題,需要更換新的倉庫。故給了一個新的倉庫地址。但是奇葩的是,更換之後,就出問題了。比如原本有A-0.0.1-SNAPSHOT.jar
,在私服上面也有這個版本的jar
包,但是就是沒辦法找到,一直提示該jar
的該版本找不到。
問題環境
軟體 | 版本 |
---|---|
maven | 3.2.3 |
IntelliJ IDEA | 2019.1 |
問題原因
接下來就是探索發現之旅了。
- 因為是更新了
setting
檔案,所以懷疑是沒有選對檔案。在idea
的setting
上面搜尋maven
,檢視相關的選項,看到是選對了settings.xml
。這個嘗試失敗; - 因為是使用
idea
,所以懷疑是不是工具沒有更新依賴,於是我將整個專案的maven
依賴重新匯入,即reimport
。很遺憾,沒有解決問題; - 因為之前有遇到一個奇葩的問題,怎麼
reimport
都失敗,而使用idea
的maven
外掛的compile
命令,反而觸發了依賴下載。所以,我點選了compile
,很遺憾,也不行; - 懷疑是
idea
關於maven
的配置有問題,比如在maven
的編輯頁面,不小心或者其他因素導致Work offline
被勾選上了,那就導致依賴只會從本地找,而不是從私服找。開啟一看,我的配置很正常。哎,這一步也嘗試失敗。 - 這個時候,有點懷疑是不是遠端倉庫是不是沒有這個
jar
包,所以登入公司的私服,到對應的地址找。誒,這個版本下面怎麼有這麼多以時間戳命名的包,難道我還得以特定的時間戳版本下載嗎?這個不科學,要知道這個版本是開發版本,是會隨時更新的。所以這是什麼回事呢???
到這裡,我們就說到正題了,這個就涉及maven
的高階配置了。在實際開發過程中,我們經常會遇到版本依賴的場景。比如服務A
依賴服務B
,而服務B
處於開發階段。假如服務B
的當前版本是1.0
,而服務A
指定依賴了服務B
的版本1.0
。過了一段時間,服務B
發現了bug
,並進行修復了,所以升級為2.0
。這樣,服務A
就得同時將服務B
的版本升級為2.0
,不然就可能出現問題。如果一直持續下去,我相信開發人員都會想吐血的。所以,這個時候就得引入maven
的Snapshot
版本機制。在開發過程中,服務B
指定了對應的Snapshot
版本,比如0.0.1-Snapshot
,而服務A
進行依賴B
的時候就指定其Snapshot
版本。服務B
每次迭代更新的時候,釋出到私服倉庫的時候,都會形成帶有時間戳
命名的Snapshot
版本,而服務A
在構建的時候,都會下載服務B
帶有最新時間戳
的Snapshot
版本。這樣,問題就得到了完美解決。比如下圖就是服務B
帶有時間戳
的Snapshot
版本截圖。
解決方案
在專案的pom.xml
檔案,裡面加上這些配置:
<repositories>
<repository>
<id>maven-releases</id>
<name>maven-releases</name>
<url>http://test.com:2000/repository/maven/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
結果
專案依賴順利下載下來了,專案編譯也沒有問題了。看到專案pom.xml
檔案沒有標紅的時候,十分開心 ٩(๑❛ᴗ❛๑)۶
總結
開發過程中,總是會遇到各種問題。即使解決了,也得找到問題解決的原因。知其然才能有技術沉澱,當然也得記錄下來。不然下次遇到相同的問題,也會忘記的 (๑╹◡╹)ノ"""
參考連結
相關文章
- 解決Maven中90%的依賴(導包)問題Maven
- 解決eclipse的maven依賴報錯EclipseMaven
- maven打包jar無法打入依賴專案問題解決MavenJAR
- maven依賴衝突以及解決方法Maven
- Maven依賴衝突解決總結Maven
- 九種 “姿勢” 讓你徹底解決跨域問題跨域
- 介面測試時依賴前置資料的問題解決了...
- Git Worktree:解決分支依賴衝突的問題Git
- Go etcd 的依賴問題終於解決了。。。Go
- 交叉編譯庫依賴問題的解決方法編譯
- Spring 迴圈依賴的三種方式(三級快取解決Set迴圈依賴問題)Spring快取
- 在maven專案中解決第三方jar包依賴的問題MavenJAR
- 依賴管理利器---Spring IO Platform解決Spring組合依賴問題實戰SpringPlatform
- 解決Android studio中gradle依賴下載太慢的問題AndroidGradle
- 解決 requests-2.17.3 依賴 chardet 庫版本不匹配的問題
- 解決npm 安裝部分依賴失敗問題總結NPM
- 函式計算|如何使用層解決依賴包問題?函式
- spring解決迴圈依賴Spring
- Maven依賴中的scope詳解Maven
- Flutter Web初嘗試以及一些問題解決FlutterWeb
- 依賴衝突時的解決方法
- 問題解決--npm install 安裝依賴一直失敗NPM
- Maven解決repository不更換的問題Maven
- maven “Generating project in Batch mode“問題的解決MavenProjectBAT
- 01 Eclipse使用Maven慢的問題解決EclipseMaven
- 在typescript專案中解決cycle依賴的一種方案TypeScript
- 使用google wire解決依賴注入Go依賴注入
- maven專案缺jar問題解決MavenJAR
- 解決Make時,“/usr/bin/ld: 找不到 -lXXX”問題的三種方法
- maven的pom.xml用解決版本問題MavenXML
- Maven依賴scope範圍詳解Maven
- 解鎖canvas匯出圖片跨域的N種姿勢~Canvas跨域
- Spring怎麼解決迴圈依賴?Spring
- 解決maven打包時手動新增的依賴jar包打不進去的情況MavenJAR
- composer依賴相關的問題和解決辦法
- 【Spring】Spring中的迴圈依賴及解決Spring
- Python爬蟲的N種姿勢Python爬蟲
- RoboWare Studio安裝及依賴項解決