【问题标题】:Is SNAPSHOT or non-SNAPSHOT the convention for libraries and Maven when doing a release for others to use?SNAPSHOT 或非 SNAPSHOT 是库和 Maven 在发布供其他人使用时的约定吗?
【发布时间】:2016-11-04 11:44:35
【问题描述】:

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

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

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

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

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

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

我的问题是:在发布供其他人使用时,库和 Maven 的约定是 SNAPSHOT 还是非 SNAPSHOT?

【问题讨论】:

  • 文本“发布 SNAPSHOT 版本”表示您通过删除 SNAPSHOT 标签来生成发布版本。然后,这将安装到发布存储库中(与 SNAPSHOT 不同的是,不会覆盖任何内容)。

标签: maven maven-reactor


【解决方案1】:

SNAPSHOT是在开发过程中分配的,开发完成后我们需要发布,那么你的版本将不包含SNAPSHOT。您可以在 Internet 上交叉验证这一点。我们用于一般用途的 jar 中没有包含SNAPSHOT。最后,它们都是 GA(通用)版本。

例如:spring-data-mongodb-1.9.2.RELEASE。所以你的团队成员说的是真的。

【讨论】:

    【解决方案2】:

    Maven: The Complete Reference, 3.3.1. Project Versions:

    快照版本

    Maven 版本可以包含一个字符串文字,表示项目当前正在积极开发中。如果版本包含字符串“-SNAPSHOT”,那么 Maven 将在您安装或发布此组件时扩展此标记 [...]。

    ...

    你为什么要使用这个? SNAPSHOT 版本用于积极开发的项目。 [...],如果您的系统的下一个版本将具有“1.4”版本,那么您的项目将具有“1.4-SNAPSHOT”版本,直到它正式发布

    ...

    发布项目时,应将所有对 SNAPSHOT 版本的依赖解析为对已发布版本的依赖。如果一个项目依赖于一个 SNAPSHOT,它是不稳定的,因为依赖关系可能会随着时间而改变。 [...] SNAPSHOT 版本仅用于开发。

    [由我强调。]

    这对我来说意味着:

    从技术 POV 可以发布任何版本,快照与否。但是(技术上)发布的快照版本不是语义 POV 的(正式)发布版本

    【讨论】:

      猜你喜欢
      • 2019-09-28
      • 2011-06-18
      • 2017-10-25
      • 1970-01-01
      • 2017-09-18
      • 2012-11-10
      • 2011-12-04
      • 2011-04-10
      相关资源
      最近更新 更多