Maven中使用<version>LATEST</version>自動依賴最新版本引發的問題

背景

今天在打包項目的過程中出現了編譯問題,奇怪的是這個項目已經好久沒有修改過了,報錯如下。

找不到符號
[ERROR]   符號:   方法 intent(java.lang.String)
[ERROR]   位置: 類型爲com.paypal.orders.OrderRequest的變量 orderRequest

找不到符號
[ERROR]   符號:   方法 amount(com.paypal.orders.AmountWithBreakdown)
[ERROR]   位置: 類 com.paypal.orders.PurchaseUnitRequest

原因在於設置外部依賴包的版本時使用了LATEST,這樣每次便會嘗試拉取最新版本的包。

<dependency>
    <groupId>com.paypal.sdk</groupId>
    <artifactId>checkout-sdk</artifactId>
    <version>LATEST</version>
</dependency>

問題原因

問題的錯誤提示很明確,是找不到paypal的sdk方法,很自然的就把問題指向了版本依賴上面,經過一番搜索後在Maven倉庫中發現checkout-sdk這個包在2019年7月份的時候發佈了1.0.1版本,這個版本在一些功能上沒有向上兼容舊版本,導致項目中依賴了1.0.0版本所使用的sdk,再依賴了新版本後便出現了編譯問題。

clipboard.png

找到問題原因之後,我們只需要把版本號改成原來的舊版本便可以了。

<dependency>
    <groupId>com.paypal.sdk</groupId>
    <artifactId>checkout-sdk</artifactId>
    <version>1.0.0</version>
</dependency>

建議

在依賴外部包的時候,版本號不要直接寫LATEST,要使用固定的版本號,否則有可能出現包升級,導致不兼容的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章