我目前正在使用Maven tools for Project Dash。其中一个公开的问题是如何处理错误。Maven工件补丁版本
Maven中央说:没有发布任何变化。这是因为Maven从不试图弄清楚版本是否发生了变化(与SNAPSHOT不同)。
但是我可能必须创建一个新的“释放”,比如说Eclipse 3.6.2的一部分。我应该使用哪个版本号? 3.6.2.1
,3.6.2-1
,3.6.2_1
,3.6.2pl1
?为什么?
我目前正在使用Maven tools for Project Dash。其中一个公开的问题是如何处理错误。Maven工件补丁版本
Maven中央说:没有发布任何变化。这是因为Maven从不试图弄清楚版本是否发生了变化(与SNAPSHOT不同)。
但是我可能必须创建一个新的“释放”,比如说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
在函数的实现更改时递增,但不添加或删除签名。例如,你发现了一个bug并修复了它。客户应该更新到新版本,但如果因为他们依赖于破坏的行为而无法工作,他们可以轻松降级。
这里棘手的问题是,它听起来像你正在修改其他人编写和发布的代码。正如我所看到的,这里的惯例是使用-yourname-version
或仅仅 - version
来后缀版本号。例如,linux-image-2.6.28-27
是Ubuntu内核映像的可能名称。
由于Maven使用破折号来区分工件坐标,但是,我会建议(非常长时间地,显然)添加.version
以避免混淆。所以在这种情况下3.6.2.1
。
Maven项目版本指定为this。
<major version>.<minor version>.<incremental version>-<qualifier>
当你不想改变你正在寻找一个预选赛版本号。我不知道是否有关于限定词名称的一般性建议。春天的人,例如不喜欢的东西this
2.5.6.SEC01
2.5.6.SR02
3.0.0.M3
他们没有使用连字符/破折号符号来单独预选赛。
无论你做什么,你必须小心有关版本的顺序!看看我添加的第一个链接。
更新:也看看@ krzyk评论最近的变化/添加。
现在根据http://www.mojohaus.org/versions-maven-plugin/version-rules.html规则是'
@krzyk感谢您提及的变化。将留下我的答案,并添加一个不是你的评论。 – FrVaBe 2016-04-11 06:55:45
这是因为Maven的从未尝试 找出一个版本是否有 改变
这是在我看来不是根本原因。原因是未来有可靠的构建。你可以在你的pom中定义版本,就是这样。如果有人从maven中心移除工件或者变得更糟,那么改变现有的工件就不能确定你的构建将来会工作...或者更老的构建可以工作。
版本号取决于你...我会建议使用3.6.2.1。
很好的答案。我还建议阅读关于语义版本控制的内容:http://semver.org/ – Nicholas 2013-03-26 08:57:10