2009-06-19 41 views
4

我最近将Maven快照构建功能添加到项目中,该项目配置为在部署的工件上使用唯一的时间戳版本。但是,这是否是正确的做法存在一些混淆(有问题的快照部署到公共回购之一,而不仅仅是在像公司这样的实体内部):有人说在尝试使用快照时会导致问题。因此:鉴于Maven有多少是基于惯例的,并且遵循可感知的最佳实践,我希望有一些关于选择哪个选项的指导原则。 (注意:我稍微编辑了标题 - 我特别感兴趣的是在公共快照版本中包含通过部署选项的唯一时间戳的优点(或缺乏);而不是如果它们使用时间戳都包括在内,尽管这显然有些相关的问题)Maven最佳实践:包括快照发布的时间戳还是不包含?

回答

0

快照的重点是让别人使用最新版本的代码。你为什么要使用五个版本的快照?

考虑到这一点,神器名称中的时间戳会给你买什么?

我一直在使用Maven大约5年了。我从来没有见过名称中带有时间戳的快照jar。

+0

谢谢! 我不知道该选项的初衷,但我的猜测是时间戳可以起到的2个意图之一: *允许可重复的构建(快照的具体instante) *确保使用最新版本的,独立的缓存或回购间同步的细节(因为快照工件名称更改,它得到(r)同步;没有它似乎有一些问题) 但我问的原因是:我不知道这些是否被认为是有效的。 :-) 我刚看到这个选项,并看到一些项目(如Enunciate)为他们的快照使用时间戳。 – StaxMan 2009-06-19 19:26:07

+0

您可能想要使用快照五个版本,因为这是您测试的内容。有时你需要比上一个版本更新的东西(例如,由于新功能),但下一个版本不及时发布。所以你选择一个快照并进行测试。 – derobert 2009-06-19 19:26:49

1

作为一项规则,您应该始终针对-SNAPSHOT依赖关系进行构建。但是,如果包含-SNAPSHOT依赖关系,则应该避免发布您的产品。如果您使用Maven Release Plug-in自动发布,它将检查并确保您没有使用发布插件或依赖项。

但这并不总是可能的。在我需要基于构建快照时发布某些内容的情况下,这种构建是在使用明确的时间戳/内部版本号而不是-SNAPSHOT版本命名方案时。

您可以使用Versions Maven Plugin自动执行此操作。它提供了在POM中锁定和解锁快照版本的目标。