2011-03-18 84 views
5

我目前正在使用Maven tools for Project Dash。其中一个公开的问题是如何处理错误。Maven工件补丁版本

Maven中央说:没有发布任何变化。这是因为Maven从不试图弄清楚版本是否发生了变化(与SNAPSHOT不同)。

但是我可能必须创建一个新的“释放”,比如说Eclipse 3.6.2的一部分。我应该使用哪个版本号? 3.6.2.13.6.2-1,3.6.2_1,3.6.2pl1?为什么?

回答

9

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

major在公共界面变化不一致时增加。例如,一个方法被删除,或者其签名改变。使用库的客户在使用具有不同主版本的库时需要小心,因为事情可能会中断。

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

build在函数的实现更改时递增,但不添加或删除签名。例如,你发现了一个bug并修复了它。客户应该更新到新版本,但如果因为他们依赖于破坏的行为而无法工作,他们可以轻松降级。

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

由于Maven使用破折号来区分工件坐标,但是,我会建议(非常长时间地,显然)添加.version以避免混淆。所以在这种情况下3.6.2.1

+1

很好的答案。我还建议阅读关于语义版本控制的内容:http://semver.org/ – Nicholas 2013-03-26 08:57:10

0

Maven项目版本指定为this

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

当你不想改变你正在寻找一个预选赛版本号。我不知道是否有关于限定词名称的一般性建议。春天的人,例如不喜欢的东西this

2.5.6.SEC01 
2.5.6.SR02 
3.0.0.M3 

他们没有使用连字符/破折号符号来单独预选赛。

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

更新:也看看@ krzyk评论最近的变化/添加。

+1

现在根据http://www.mojohaus.org/versions-maven-plugin/version-rules.html规则是' - ' – 2016-04-08 07:57:37

+0

@krzyk感谢您提及的变化。将留下我的答案,并添加一个不是你的评论。 – FrVaBe 2016-04-11 06:55:45

0

这是因为Maven的从未尝试 找出一个版本是否有 改变

这是在我看来不是根本原因。原因是未来有可靠的构建。你可以在你的pom中定义版本,就是这样。如果有人从maven中心移除工件或者变得更糟,那么改变现有的工件就不能确定你的构建将来会工作...或者更老的构建可以工作。

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