为什么Maven中的动态版本范围没有最初预期的有用?

时间:2019-06-04 15:21:28

标签: java python maven

我一直在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框架可以处理依赖项版本范围?

1 个答案:

答案 0 :(得分:1)

其他选项为Gradle。 从其文档“如果将依赖项声明为动态版本(如1。+,[1.0,],[1.0、2.0)),Gradle会将其解析为存储库中可用的最高具体版本(如1.2)” < / p>