Maven依賴的是本地工程還是倉庫jar包?


  相信大家都碰見過maven配置的依賴或者是jar包或者是工程,在開發的過程當中,我們當然需要引入的是工程,這樣查看maven依賴的文件的時候,就能直接查看到源碼。

  一、本地工程依賴

  舉個例子,其架構如下所示(以下均使用eclipse中m2eclipse插件進行演示)——

  

 

  此時,這里依賴的“dependency-to-hello”指代的是eclipse工作空間中的工程,這樣,我們直接源碼依賴的便是工作空間里的源碼,這樣很方便,也是我們需要的。會注意到,所依賴的“dependency-to-hello”工程,並沒有顯示其路徑,也就是默認的工作空間的地址。

  那么,什么時候maven依賴的是倉庫(本地倉庫或遠程倉庫)中的jar包呢?

  二、(本地/遠程)倉庫jar包依賴

  很簡單的方法之一,直接把“dependency-to-hello”工程關閉掉(close project),這樣,就得到這樣一個視圖——

  

  會看到,此時maven依賴的正是對應“dependency-to-hello”工程的jar文件,並且,后面的路徑顯示是從maven倉庫里面取的。

  三、工程依賴及倉庫依賴的轉換

  OK,我們現在還原之,我們將工程“dependency-to-hello”打開,會看到對應的maven依賴又變回原來的工程依賴了。

  需要說的是,當重新打開工程“dependency-to-hello”的時候,hello工程並沒有出現紅色感嘆號,也就是無須做“update dependencies”等的更新maven依賴等操作。

  從這里,我們就能夠看出來——m2eclipse首先查看是否能夠從本地工程庫中得到對應的maven依賴,如何存在,則將本地工程依賴進來;如何不存在,則從本地倉庫/遠程倉庫中加載解析對應的jar包依賴。

  四、版本號變更

  在這兒,我假裝模擬一下版本號變更,來看一下,會發生什么情況?

  現在“dependency-to-hello”工程是“快照”版本,當我們將之換為正式版本的時候,發現“hello”工程的maven依賴重新變回了jar依賴,如下——

  “dependency-to-hello”工程的maven坐標配置——

<groupId>com.juvenxu.mvnbook</groupId>
<artifactId>dependency-to-hello</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>

  “hello”工程的依賴配置——

<dependency>
    <groupId>com.juvenxu.mvnbook</groupId>
    <artifactId>dependency-to-hello</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

  其文件架構會顯示如下——

  

  會發現其依賴是原有的倉庫中的“快照”版本的“dependency-to-hello”的jar包。我們將倉庫中的“快照”版本刪除掉。刷新工程,發現hello工程上顯示紅色感嘆號。如下——

  

  也就是說,其依賴是空依賴,本地及倉庫中均不存在。

  當然這個“陷阱”是我自己加的,重新更改其版本號正確對應即可,就可以重新得到maven本地工程依賴了。

  五、總結

  在日常多人協作開發過程中,我們常常會遇到maven依賴版本變更帶來的問題。當我們的工作空間也存在對應的依賴工程(對應上述例子中的“dependency-to-hello”工程)的時候,我們可以通過判斷依賴的是本地工程還是倉庫jar包的方式來判斷是否出現了版本不一致的問題。從而,就能夠解決maven依賴版本變更帶來的問題。

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM