我有幾個庫,其中一些依賴於另一個庫。因此,對於如:如果我發佈的Maven庫,如果它的依賴項之一更改?
一個1.0.0 無依賴
乙1.0.0 取決於:一1.0.0
的問題是:
如果我釋放出與1.0.1這個版本是否向後兼容1.0.0我應該釋放B?
我有幾個庫,其中一些依賴於另一個庫。因此,對於如:如果我發佈的Maven庫,如果它的依賴項之一更改?
一個1.0.0 無依賴
乙1.0.0 取決於:一1.0.0
的問題是:
如果我釋放出與1.0.1這個版本是否向後兼容1.0.0我應該釋放B?
這可能取決於代碼的具體細節以及工件是如何部署的,但通常情況下,您需要釋放B才能使代碼更改爲可見。
<dependency>
。這意味着客戶端也對A具有傳遞依賴性,但是在B中的<dependency>
中表示的特定版本。以您的示例爲例,客戶端依賴於B 1.0.0,它本身依賴於A 1.0 .0,所以客戶端將會傳遞一個1.0.0。爲了向客戶發佈A中的錯誤修復,您需要釋放B 1.0.1,其A上的<dependency>
更新爲指向A 1.0.1。<dependency>
都在內部戰爭的lib
目錄內。爲了向此Web應用程序發佈A中的錯誤修復,您需要釋放B 1.0.1,其A上的<dependency>
更新爲指向A 1.0.1。在第一個例子,(客戶機依賴於B作爲罐),一個可能的解決方法是爲客戶端通過在加入了自己明確<dependency>
,可能使用用於柔性的版本範圍覆蓋A的版本拿起最新發布的版本。這可能會導致維護缺陷,因爲這意味着客戶將A版本和B版本作爲B版本的一部分進行組合。一般來說,最好是釋放B,但如果難以釋放B,那麼這可能是一個可行的短期解決方法。在傳遞依賴和版本範圍語法
更多詳情,請訪問:
謝謝克里斯!主要觀點是「一般來說,最好是釋放B,但如果難以釋放B,那麼這可能是一個可行的短期解決方法。」我想我會發布B,這不是難事 –
我會阻止使用版本範圍,因爲這會讓你的內部版本無法再生......更好地顯式覆蓋依賴關係....最近的依賴項獲勝... – khmarbaise
@khmarbaise,是,我也不喜歡範圍版本 –
如果你能保證一個與1.0.1是向後兼容1.0.1不需要發佈B的新版本。您應該在版本模式中明確表示1.0.1意味着bug修復,1.1.0意味着增強但向後兼容(語義版本控制)......只有文檔中有一個好的提示爲用戶o f A應該被做。 – khmarbaise