gpt4 book ai didi

maven - Maven如何排序版本号?

转载 作者:行者123 更新时间:2023-12-03 10:36:01 25 4
gpt4 key购买 nike

当没有所有开源软件包都遵循的一致版本控制方案时,Maven似乎能够指示一系列版本,例如<version>[1.2.3,)</version>,maven如何确定是较新的版本还是较旧的版本。例如

  • junit 4.10
  • slf4j 1.7.2
  • 休眠4.1.7.Final
  • Spring 3.1.2.RELEASE

  • Maven如何判断Maven中软件包的旧版本和新版本?如果程序包使用字母作为版本号,则沿A,B,C或A2,A2,A4 ...

    在Maven中应该有一种标准的官方版本包方法吗?像spring和hibernate这样的通用开源软件包会忽略此版本约定吗?

    最佳答案

    从3.0版开始,Maven使用一致的系统来比较各个版本和版本范围的版本号。一旦您了解了一些陷阱,现在该系统就变得很有道理了。

    现在所有比较都是由ComparableVersion完成的,它说:

    • mixing of '-' (dash) and '.' (dot) separators,
    • transition between characters and digits also constitutes a separator: 1.0alpha1 => [1, 0, alpha, 1]
    • unlimited number of version components,
    • version components in the text can be digits or strings,
    • strings are checked for well-known qualifiers and the qualifier ordering is used for version ordering. Well-known qualifiers (case insensitive) are:
      • alpha or a
      • beta or b
      • milestone or m
      • rc or cr
      • snapshot
      • (the empty string) or ga or final
      • sp
    • Unknown qualifiers are considered after known qualifiers, with lexical order (always case insensitive),
    • a dash usually precedes a qualifier, and is always less important than something preceded with a dot.


    这意味着版本以以下顺序出现,除了中间的1.0-SNAPSHOT,我认为这是很合理的:
  • 1.0-beta1-SNAPSHOT
  • 1.0-beta1
  • 1.0-beta2-SNAPSHOT
  • 1.0-rc1-SNAPSHOT
  • 1.0-rc1
  • 1.0-SNAPSHOT
  • 1.0
  • 1.0-sp
  • 1.0-whatever
  • 1.0.1

  • 我在所有这一切中发现的主要问题是 snapshotbetarc之后,因此您不能拥有 1.0-SNAPSHOT的开发版本,然后发布 1.0-beta11.0-rc1,让Maven知道以后会发布。

    另请注意, 1.0-beta-11.0beta1完全相同,并且 1.011.0.0完全相同。

    现在,版本范围也(几乎)以您期望的方式工作。例如, [1.0-alpha-SNAPSHOT,1.0]将找到 1.0-beta1-SNAPSHOT1.0-beta11.0-rc1-SNAPSHOT1.0-rc11.0-SNAPSHOT1.0,它们优先于较早的项目。 mvn versions:resolve和M2Eclipse等完全支持此功能。

    关于maven - Maven如何排序版本号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13004443/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com