补丁的Maven工件版本

时间:2011-03-18 13:01:13

标签: maven versioning release-management

我目前正致力于Maven tools for Project Dash。其中一个悬而未决的问题是如何处理错误。

Maven Central说:没有任何出版物发生变化。这是因为Maven从未试图弄清楚版本是否发生了变化(与SNAPSHOTs不同)。

但我可能不得不创建一个新的“发布版”,例如Eclipse 3.6.2的一部分。我应该使用哪个版本号? 3.6.2.13.6.2-13.6.2_13.6.2pl1?为什么呢?

3 个答案:

答案 0 :(得分:14)

版本号的约定是major.minor.build

当公共接口更改不兼容时,

major会递增。例如,删除方法或更改其签名。使用您的库的客户在使用具有不同主要版本的库时需要小心,因为事情可能会中断。

当公共接口以兼容方式更改时,

minor会递增。例如,添加了一种方法。客户不需要担心使用新版本,因为他们习惯看到的所有功能仍然存在并且行为相同。

当函数的实现发生更改时,

build会递增,但不会添加或删除任何签名。例如,您发现了一个错误并修复了它。客户端应该更新到新版本,但如果它不起作用,因为它们依赖于破坏的行为,它们很容易降级。

这里棘手的问题是,听起来你正在修改由其他人编写和发布的代码。正如我所看到的,这里的惯例是使用-yourname-version或只是 - version对版本号进行后缀。例如,linux-image-2.6.28-27可能是Ubuntu内核映像的名称。

由于Maven使用破折号来区分神器坐标,但我建议(非常啰嗦地,显然)只需添加.version以避免混淆它。在这种情况下3.6.2.1

答案 1 :(得分:1)

Maven项目版本指定为this

<major version>.<minor version>.<incremental version>-<qualifier>

由于您不想更改版本号,因此您需要限定符。我不知道是否有关于限定符名称的一般建议。春天的人,例如做了this

之类的事情
2.5.6.SEC01
2.5.6.SR02
3.0.0.M3

他们没有使用连字符/破折号符号来分隔限定词。

无论你做什么,你都必须小心版本的订购!看看我添加的第一个链接。

更新:另请查看@krzyk对最近更改/添加内容的评论。

答案 2 :(得分:0)

  

这是因为Maven从未尝试过   弄清楚一个版本是否有   改变

在我看来,这不是基本原因。原因是未来可靠的构建。您可以在pom中定义版本,就是这样。如果有人从maven中心删除工件或者更改现有工件会变得更糟,那么您无法确定您的构建将来是否会正常工作......或者旧版本可以正常工作。

版本号取决于你......我建议使用3.6.2.1。