我一直在Maven / POM中使用显式版本的Java依赖项。
然后短时间内,我切换到Python,在那我了解到依赖版本范围(例如> = 2.3.0)非常流行,并且似乎限制了依赖冲突的问题:两个范围重叠的可能性大于后者两个完全相同的版本是相等的。我想知道为什么在Maven / POM世界中不存在这样的解决方案?
然后我在我的GitHub项目依赖项中收到有关漏洞的通知,并提出了将其升级到的建议:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>[2.9.9,)</version>
</dependency>
太好了,我想,所以Maven中有依赖版本范围!我不需要经常更新依赖项。但是,我读到了they are de facto depracated,因为:
它们不如最初预期的有用,而且如果不重新思考,他们不太可能获得改进。
那个
依赖关系范围的解析不应解析为快照(开发版本),除非将其作为显式边界包括在内
但这里似乎有 bug (于2007年筹集并于2018年重新开放)。
为什么它们不如最初预期的有用?
除了Maven之外,是否还有其他Java框架可以处理依赖项版本范围?
答案 0 :(得分:1)
其他选项为Gradle。 从其文档“如果将依赖项声明为动态版本(如1。+,[1.0,],[1.0、2.0)),Gradle会将其解析为存储库中可用的最高具体版本(如1.2)” < / p>