我将其从 trunk vs branch release 问题中排除,因为这是一个单独的问题。
假设您已经完成了开发迭代,并且正在推出一个版本供其他人在他们的项目中使用。
现在我团队的一些成员说:
SNAPSHOT用于在您的团队中进行迭代 - 非SNAPSHOT用于实际发布。
但是,当我查看反应堆插件和相关评论时,它似乎say the opposite:
你应该只发布SNAPSHOT版本。这意味着您的版本号将类似于3.0.3-SNAPSHOT。
我的问题是: SNAPSHOT或非SNAPSHOT是库和Maven在发布供别人使用时的惯例吗?
答案 0 :(得分:0)
SNAPSHOT
,在完成我们需要发布的开发之后,您的版本将不包括SNAPSHOT
。您可以在Internet中交叉验证。我们用于通用目的的jar不包含SNAPSHOT
。最后,它们都是GA(一般可用)版本。
示例:spring-data-mongodb-1.9.2.RELEASE。所以你的团队成员说的是真的。
答案 1 :(得分:0)
请参阅Maven: The Complete Reference, 3.3.1. Project Versions:
SNAPSHOT版本
Maven版本可以包含字符串文字,表示项目当前处于活动开发状态。如果版本包含字符串“-SNAPSHOT”,则Maven将在您安装或发布此组件时扩展此令牌[...]。
...
你为什么要用这个? SNAPSHOT版本用于正在开发的项目。 [...],如果您的系统的下一个版本的版本为“1.4”,那么您的项目将具有版本“1.4-SNAPSHOT”,直到正式发布。
...
发布项目时,您应该将SNAPSHOT版本的所有依赖项解析为已发布版本的依赖项。如果项目依赖于SNAPSHOT,则它不稳定,因为依赖项可能会随时间而变化。 [...] SNAPSHOT版本仅用于开发。
[强调我。]
这对我来说意味着:
从技术POV可以发布任何版本,快照与否。但是(技术上)发布的快照版本不是来自语义POV的(正式)发布版本。