在閱讀NPM,Yarn,Paket,Cargo等包管理器時,我最近已經介紹了依賴版本鎖定文件的概念。我的理解是,它是一個文件,它列出了所有直接和傳遞依賴關係它們的確切版本號,以便後續構建保證使用一組等效的依賴項。這似乎是一個理想的功能,因爲許多軟件包管理者已經或正在採用這個概念。爲什麼Gradle或Maven沒有依賴版本鎖定文件?
我的問題是,那麼:
爲什麼不Maven的或搖籃使用鎖文件?或者如果他們這樣做,爲什麼我沒有看到它?
在包管理器的依賴關係解析策略中允許版本範圍vs只允許精確版本有什麼優點和缺點?
如果你在你的POM中定義的版本文件的依賴關係樹總是相同的,這意味着你不需要定義所有的傳遞依賴關係,並且你節省了很多工作。除非在Maven中使用版本範圍(這會導致不可重現的構建,對於所有其他構建系統也是如此)。 – khmarbaise
也許如果你可以詳細說明或改寫你的評論。人們似乎認爲這是一個有用的評論,但我很難看到它如何回答我的問題。 – jrahhali
簡單的答案是:Maven,Gradle等已經實現了這個並不是一個明確的文件,而是基於一個依賴樹的思想,它總是以同樣的方式進行迭代,這意味着樹總是有相同的版本,這意味着最終你不需要一個文件來定義它們的版本中的所有傳遞性和非傳遞性依賴關係(BTW:Maven在10年前的Maven 1.X中有一個定義文件中的所有內容的概念)... – khmarbaise