在阅读NPM,Yarn,Paket,Cargo等包管理器时,我最近已经介绍了依赖版本锁定文件的概念。我的理解是,它是一个文件,它列出了所有直接和传递依赖关系它们的确切版本号,以便后续构建保证使用一组等效的依赖项。这似乎是一个理想的功能,因为许多软件包管理者已经或正在采用这个概念。为什么Gradle或Maven没有依赖版本锁定文件?
我的问题是,那么:
为什么不Maven的或摇篮使用锁文件?或者如果他们这样做,为什么我没有看到它?
在包管理器的依赖关系解析策略中允许版本范围vs只允许精确版本有什么优点和缺点?
如果你在你的POM中定义的版本文件的依赖关系树总是相同的,这意味着你不需要定义所有的传递依赖关系,并且你节省了很多工作。除非在Maven中使用版本范围(这会导致不可重现的构建,对于所有其他构建系统也是如此)。 – khmarbaise
也许如果你可以详细说明或改写你的评论。人们似乎认为这是一个有用的评论,但我很难看到它如何回答我的问题。 – jrahhali
简单的答案是:Maven,Gradle等已经实现了这个并不是一个明确的文件,而是基于一个依赖树的思想,它总是以同样的方式进行迭代,这意味着树总是有相同的版本,这意味着最终你不需要一个文件来定义它们的版本中的所有传递性和非传递性依赖关系(BTW:Maven在10年前的Maven 1.X中有一个定义文件中的所有内容的概念)... – khmarbaise