【问题标题】:Maven dependencies - version vs updatesMaven 依赖项 - 版本与更新
【发布时间】:2016-05-23 02:45:11
【问题描述】:

mvnrepository 通常会列出每个依赖项的“版本”和“更新”。

  1. 如果我要发布自己的包,如何指定“更新”版本
  2. Maven 在解析传递依赖时使用了哪种依赖?因此,如果我的包依赖于包 A,它依赖于包 B,版本 = 1.0,更新 = 1.1。我会得到哪个版本的 B?

【问题讨论】:

  • 因此您定义为依赖于包 A(版本?),它依赖于包 B(版本 1.0)。因此,如果您不在包中覆盖它,您将获得包 B 的 1.0 版...因此,您在 pom 文件中定义了依赖项,该依赖项已检查到您的版本控制中,这意味着在您更改 pom 文件之前这不会改变...我可能误解了这个问题吗?如果您想更新您需要更改包 A 的版本(不同版本)..?
  • 你在说什么“更新”?以mvnrepository.com/artifact/com.github.valdr/… 为例,你在哪里看到“更新”?
  • @MarcelStör:jackson-databind 是 2.4.0 版,更新 2.7.1-1
  • @khmarbaise:确实是 A 依赖于 B 上的 1.0 版本。但是在 Marcel 的示例中说 - Valdr Bean 依赖于 jackson-databind。如果我包含 Valdr Bean,我什么时候可以获得 jackson-databind 2.4.0,什么时候可以获得版本 2.7.1-1?
  • @EugeneMi 您还需要反馈吗?如果不是,我建议您考虑接受答案,以便可以将此问题标记为已关闭,meta.stackexchange.com/questions/5234/…

标签: maven maven-dependency


【解决方案1】:

你问的是 MVNRepository 的“编译依赖”表的“更新”列中的信息是什么意思。

它会告诉您是否有可用的特定依赖项的更新版本,如果有,最新版本是什么。如果有复选标记,则表示相关库已经使用了最新版本的依赖项 X。无论 最新 版本是什么,您将始终获得 declared 版本的依赖项是。

因此,如果您使用valdr-bean-validation 1.1.2(上面的示例),您还将获得jackson-databind 2.4.0 作为传递依赖项(上面的第一行)。 2.7.1-1 将是最新可用的jackson-databind 版本。

注:我终于明白你的问题了。如果您从一开始就给我们一个具体的例子,对您会有所帮助。

【讨论】:

  • 我注意到在某些情况下“更新”版本实际上比“版本”版本旧。例如“版本:2.5.0-b42;更新:2.4.0”。令人困惑。
  • 是的,here's 是“更新”列的版本比“版本”列更旧的示例。我猜“更新”列版本是原始库需要的版本。另一个问题是关于复选标记。上面的解释不清楚。如果“版本列”是最新版本并且原始库需要该版本,是否存在复选标记?
  • @andy-dufresne 回复:“版本:2.5.0-b42;更新:2.4.0”:按照 Maven 标准(即比较版本号的方式)2.5.0-b42 不是一般可用的版本,但是是 alpha、beta 或 RC 类型之一。这就是为什么它认为 2.4.0 是最新的普遍可用版本。在这方面它可能不够聪明。我想这是主观的。复选标记只是意味着(再次根据 Maven 的版本算法)最新的普遍可用版本是在项目 POM 中声明的版本 -> 项目正在使用最新的。
  • 如果我想使用传递依赖的更新版本,如何在 POM.xml 中配置
  • @SridharSarnobat 我不知道。如果全世界都使用 SemVer,理论上可能可以从版本号的差异中得出此信息。但是,有些项目声称/似乎使用 SemVer,但仍会通过次要版本发布重大更改。只有一个保证:没有保证:-/
猜你喜欢
  • 1970-01-01
  • 2018-07-14
  • 1970-01-01
  • 2016-09-18
  • 2014-10-13
  • 1970-01-01
  • 2020-07-26
  • 2019-01-24
  • 2019-03-03
相关资源
最近更新 更多