繁体   English   中英

补丁的Maven工件版本

[英]Maven artifact version for patches

我目前正在为Project Dash开发Maven工具 其中一个悬而未决的问题是如何处理错误。

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

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

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

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

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

当函数的实现发生更改时, build会增加,但不会添加或删除任何签名。 例如,您发现了一个错误并修复了它。 客户端可能应该更新到新版本,但如果它不起作用,因为它们依赖于破坏的行为,它们可以轻松降级。

这里棘手的问题是,它听起来像是在修改由其他人编写和发布的代码。 这里的惯例,因为我已经看到了,是要么与postfix的版本号-yourname-version或只是- version 例如, linux-image-2.6.28-27可能是Ubuntu内核映像的名称。

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

Maven项目版本等指定

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

由于您不想更改版本号,因此您需要查找限定符 我不知道是否有关于限定符名称的一般建议。 春天的人们做了类似的事情

2.5.6.SEC01
2.5.6.SR02
3.0.0.M3

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

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

更新 :另请参阅@krzyk对最近更改/添加的评论。

这是因为Maven从未试图弄清楚版本是否发生了变化

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM