問題解決:嘗試解決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中解決依賴衝突的問題Maven
- 解決Maven中90%的依賴(導包)問題Maven
- Activiti系列:如何把Activiti工程轉換為maven工程以解決依賴項找不到的問題Maven
- 解決eclipse的maven依賴報錯EclipseMaven
- maven依賴衝突以及解決方法Maven
- Maven依賴衝突解決總結Maven
- maven解決jar包依賴衝突MavenJAR
- 介面測試時依賴前置資料的問題解決了...
- 九種 “姿勢” 讓你徹底解決跨域問題跨域
- 交叉編譯庫依賴問題的解決方法編譯
- 使用maven-shade-plugin外掛解決spark依賴衝突問題MavenPluginSpark
- 在maven專案中解決第三方jar包依賴的問題MavenJAR
- Spring 迴圈依賴的三種方式(三級快取解決Set迴圈依賴問題)Spring快取
- Git Worktree:解決分支依賴衝突的問題Git
- Go etcd 的依賴問題終於解決了。。。Go
- 關於 OkHttp 依賴衝突問題的解決過程HTTP
- 編譯OpenVPN及解決相關依賴問題編譯
- 解決 requests-2.17.3 依賴 chardet 庫版本不匹配的問題
- 使用ReflectionTestUtils解決依賴注入依賴注入
- 解決npm 安裝部分依賴失敗問題總結NPM
- 函式計算|如何使用層解決依賴包問題?函式
- 依賴管理利器---Spring IO Platform解決Spring組合依賴問題實戰SpringPlatform
- Flutter Web初嘗試以及一些問題解決FlutterWeb
- Maven依賴中的scope詳解Maven
- hibernate 1 + N 問題解決
- 依賴衝突時的解決方法
- 使用google wire解決依賴注入Go依賴注入
- spring解決迴圈依賴Spring
- depmod解決模組依賴關係
- 在typescript專案中解決cycle依賴的一種方案TypeScript
- maven的編碼問題、解決和疑問Maven
- Maven依賴scope範圍詳解Maven
- maven專案缺jar問題解決MavenJAR
- bower解決js的依賴管理備記JS
- 解鎖canvas匯出圖片跨域的N種姿勢~Canvas跨域
- 問題解決--npm install 安裝依賴一直失敗NPM
- SBT使用阿里雲Maven倉庫,解決SBT下載依賴慢。阿里Maven
- 解決rpm包依賴關係