当前位置: 首页 > 知识库问答 >
问题:

在发布供其他人使用的版本时,库和Maven的惯例是快照还是非快照?

寿阳华
2023-03-14

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

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

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

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

但是当我看Reactor插件和相关评论时——它似乎说的相反:

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

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

共有2个答案

袁翔
2023-03-14

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

示例:spring-data-mongodb-1.9.2。释放。所以你的团队成员所说的是真的。

商棋
2023-03-14

参见Maven:完整参考,3.3.1。项目版本:

快照版本

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

。。。

你为什么要用这个?快照版本用于正在进行开发的项目。[…],如果您的系统的下一个版本将有一个版本“1.4”,那么在正式发布之前,您的项目将有一个版本“1.4-SNAPSHOT”。

。。。

发布项目时,您应该将SNAPSHOT版本上的所有依赖项解析为已发布版本上的依赖项。如果项目依赖于SNAPSHOT,则它不稳定,因为依赖项可能会随着时间的推移而变化。[...]SNAPSHOT版本仅用于开发。

[由我强调。]

这对我来说意味着:

从技术角度来看,可以发布任何版本,无论是否发布快照。但(技术上)发布的快照版本并不是语义POV(正式)发布的版本。

 类似资料:
  • 我的目标是发布一个具有单一依赖项的项目。我有一个nexus存储库,我在其中部署快照和发布版本。 我唯一的依赖性 我的nexus repo中发布了以下候选版本 当要求版本插件解决依赖关系时,它声称没有新的依赖关系可用。所以他认为 但是,如果在我的项目中有版本1.0.0-SNAPSHOT,那么版本1.1.0-RC1将解析为最新版本。 我错过了什么?(我查看了插件源代码,我们有以下片段: 对我来说这辆车

  • 我有以下项目结构: 框架 框架父pom 构架某事 在框架-父母-pom的pom.xml中,我定义了以下插件: 并遵循SCM: 当我运行以下命令时。。。 ……一切似乎都很顺利。 在本地创建了带有发布版本的JAR,并且POM很好地更新到下一个SNAPSHOT版本。同样在SVN中,乍一看似乎还可以。标签已创建,其中包含所有框架项目。 但是,当查看标记的POM时,我看到它们仍然具有初始快照版本作为版本。这

  • 我的计划是建立一个设置,在这个设置中,我可以基于我正在运行的maven目标发布快照和版本。我当前的pom包含以下详细信息- 我的maven settings.xml包含服务器条目- 当我运行命令时 编辑1- 我运行了,部署插件的日志是-

  • 我无法发布我使用maven to Nexus构建的工件的快照版本。我的工件的版本状态为1.0.0-Snapshot。 我可以毫无问题地执行。但是,当我尝试使用进行部署时,会出现以下错误:

  • 我有一个常春藤项目,将其工件发布到Nexus Maven存储库。然后,我需要其他 Maven 项目能够将这些 jar 用作依赖项。我已经能够让艾薇创建并上传pom.xml以及罐子,这工作正常。问题是,当我使用 Ivy 发布新的快照版本时 - 即使我这样做,也没有 Maven 项目会检索新的快照依赖项: 我注意到Ivy没有向repos发布maven-metadata.xml文件——我想这就是问题所在

  • 我有一个多模块项目。而且,我希望能够只做gradle发布,并发布所有模块的所有工件。其中一个问题是,当我包含插件时,我得到了名为“构建”的任务,但在根项目中找不到。 当我运行