SNAPSHOT或非SNAPSHOT是库和Maven在为其他人发布时允许使用的约定吗?

时间:2016-07-02 02:37:00

标签: maven maven-reactor

我将其从 trunk vs branch release 问题中排除,因为这是一个单独的问题。

假设您已经完成了开发迭代,并且正在推出一个版本供其他人在他们的项目中使用。

现在我团队的一些成员说:

  

SNAPSHOT用于在您的团队中进行迭代 - 非SNAPSHOT用于实际发布。

但是,当我查看反应堆插件和相关评论时,它似乎say the opposite

  

你应该只发布SNAPSHOT版本。这意味着您的版本号将类似于3.0.3-SNAPSHOT。

我的问题是: SNAPSHOT或非SNAPSHOT是库和Maven在发布供别人使用时的惯例吗?

2 个答案:

答案 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的(正式)发布版本