为什么Maven中的动态版本范围没有最初打算的有用? - java

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

参考方案

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

Java:我可以在Hashmaps中使用数组吗? - java

我可以在Hashmaps中使用数组吗?如果是这样,则声明这种哈希图的确切语法是什么?谢谢 参考方案 数组也是对象。甚至像int[]这样的原始数组。Map<String,String[]> map = new HashMap<String,String[]>();

Maven:将本地依赖项添加到jar - java

我有一个依赖 <dependency> <groupId>de.matthiasmann</groupId> <artifactId>twl</artifactId> <version>1.0.0</version> <scope>system</scope…

与哪些运算符>>兼容 - java

我这里没有什么代码int b=3; b=b >> 1; System.out.println(b); 它可以完美工作,但是当我将变量b更改为byte,short,float,double时,它包含错误,但是对于变量int和long来说,它可以完美工作,为什么它不能与其他变量一起工作? 参考方案 位移位运算符(例如>>)与任何整数类型兼…

Maven:项目构建错误“modelVersion”丢失 - java

我正在尝试创建一个新的Maven项目,但是我从pom.xml中得到了这个错误...有人可以帮我解决问题吗?我是Maven和Eclipse IDE的新手非常感谢。 参考方案 您的pom.xml不完整你需要<?xml version="1.0" encoding="UTF-8"?> <project xm…

Java:正则表达式模式匹配器是否有大小限制? - java

我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)