1. 程式人生 > 實用技巧 >maven直接直接依賴問題。

maven直接直接依賴問題。

maven中B模組依賴A模組,預設在生產環境(即IDEA中A,B兩模組在同一級)即便你Install把模組A安裝在了本地庫,但其實生產環境中用的還是上面的模組A,而不會使用本地庫中剛剛構建好的依賴。

如圖我們在Junit的jar包進行Install構建到本地倉庫,可以看出Junit的使用環境是test,我們構建後即便B模組進行引入,理論上也不會繼承到Junit的依賴。
在這裡插入圖片描述

例如:本地庫中已經夠建好了
在這裡插入圖片描述
然後我們在B模組中對A進行引入
在這裡插入圖片描述
3,在測試方法中想使用@Test註解是不能使用的,因為此時A模組中Junit的使用範圍是test而且本地庫中對A模組構建也是基於test使用範圍的。
在這裡插入圖片描述
4,但是如果我們把IDEA中A模組的Junit的使用範圍修改成預設的compile時就會出現問題

在這裡插入圖片描述
5,這時我們再次到B模組中,可以看到@Test居然能用了
在這裡插入圖片描述
在這裡插入圖片描述
而且在右邊B專案的依賴中,我們可以明顯看到B模組從A模組的依賴中中繼承到了Junit的Jar包
在這裡插入圖片描述
6,注意:我的本地庫構建的A依賴的Junit的Jar包的範圍仍然是test
因此發,我們可以得出一個結論:如果A,B模組在同一級別目錄下,如果B對A進行依賴引入,那麼不論你在本地庫對A模組進行了如何構建。B模組引入的仍然是以IDEA中最新的A模組的pom.xml中配置的內容為準。
7,如果我們把IDEA中A模組進行刪除,那麼此時B模組只能去本地庫中尋找A依賴。那麼此時本地庫中A依賴的Junit的Jar包的範圍仍然是test。那麼B模組就不會從A中繼承得到Junit,即不能使用@Test。