[英]Maven artifact version for patches
我目前正在为Project Dash开发Maven工具 。 其中一个悬而未决的问题是如何处理错误。
Maven Central说:没有任何出版物发生变化。 这是因为Maven从未试图弄清楚版本是否发生了变化(与SNAPSHOTs不同)。
但我可能不得不创建一个新的“发布版”,例如Eclipse 3.6.2的一部分。 我应该使用哪个版本号? 3.6.2.1
, 3.6.2-1
, 3.6.2_1
, 3.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从未试图弄清楚版本是否发生了变化
在我看来,这不是基本原因。 原因是未来可靠的构建。 您可以在pom中定义版本,就是这样。 如果有人从maven中心删除工件或者更改现有工件会变得更糟,那么您无法确定您的构建将来是否会正常工作......或者旧版本可以正常工作。
版本号取决于你...我建议使用3.6.2.1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.