Maven中使用LATEST自動依賴最新版本引起的問題

背景

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

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

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

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

<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,再依賴了新版本後便出現了編譯問題。spa

maven repo

找到問題緣由以後,咱們只須要把版本號改爲原來的舊版本即可以了。3d

<dependency>
    <groupId>com.paypal.sdk</groupId>
    <artifactId>checkout-sdk</artifactId>
    <version>1.0.0</version>
</dependency>
複製代碼

建議

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

相關文章
相關標籤/搜索