增加maven模块版本
Increment maven module version
我使用 Maven 模块 'foo-common'。我目前正在使用 SNAPSHOT 版本控制。我希望只要这个模块有任何变化,它的版本就会使用来自 jenkins 的内部版本号递增,并将其部署到远程存储库。
但是,问题是,如果我当前的版本是 1.0.40-SNAPSHOT,然后如果我想增加主要版本,那么版本将变为 2.0.41-SNAPSHOT,这没有任何意义。
有人可以为此提出更好的方法吗?
maven 的想法是使用 mvn 发布插件将版本从 SNAPSHOT 移动到发布。
所以如果你这样做了(假设你有正确的 pom):
mvn release:prepare release:perform
这将删除发布版本的快照,在您的示例中,这将是 1.0.40,然后它将使用标签在源代码管理中标记此版本,然后它将完成的工件推送到您的发布存储库在标签中定义,然后它将为下一个 SNAPSHOT 移动版本,在您的情况下将是 1.0.41-SNAPSHOT。
如果您想发布主要版本,则应使用 mvn versions:set 1.1.0-SNAPSHOT 将版本移至 "manually"。
Maven 使用两个概念:您有一个快照或一个版本。这些名称具有很强的误导性,我会相应地调用它们:temporary_candidate 和 permanent_version.
快照似乎是版本化的,有点,但如果您使用存储库(如 Nexus 等),您会注意到快照旨在仅保存最近的几个迭代,其中较旧的快照会很快被删除。此外,在下载快照时,很明显预期的用途是始终使用最新的快照。发布永久保留;这些版本预计将按版本号下载。
版本号不适用于开发人员。它是开发人员和测试人员以及部署团队和最终用户之间的沟通工具。
测试人员报告"to replicate this bug: (1) deploy version 2.0.44-SNAPSHOT, (2) click XYZ button"没有意义。该报告在“2.0.44-SNAPSHOT”部分被破坏,因为它不是一个真实的版本号,测试人员应该预期“2.0.44-SNAPSHOT”下的代码已经更改并且现在有完全不同的错误。每次重新部署时它都会改变。
预期用途是仅在正在进行对话时向 tester/user 显示 SNAPSHOT。情况一好,你就放手。
Jenkins 有一个非常有用的发布插件。它允许更改版本号并执行所有发布任务(包括但不限于 maven 发布插件)。
我使用 Maven 模块 'foo-common'。我目前正在使用 SNAPSHOT 版本控制。我希望只要这个模块有任何变化,它的版本就会使用来自 jenkins 的内部版本号递增,并将其部署到远程存储库。 但是,问题是,如果我当前的版本是 1.0.40-SNAPSHOT,然后如果我想增加主要版本,那么版本将变为 2.0.41-SNAPSHOT,这没有任何意义。 有人可以为此提出更好的方法吗?
maven 的想法是使用 mvn 发布插件将版本从 SNAPSHOT 移动到发布。
所以如果你这样做了(假设你有正确的 pom):
mvn release:prepare release:perform
这将删除发布版本的快照,在您的示例中,这将是 1.0.40,然后它将使用标签在源代码管理中标记此版本,然后它将完成的工件推送到您的发布存储库在标签中定义,然后它将为下一个 SNAPSHOT 移动版本,在您的情况下将是 1.0.41-SNAPSHOT。
如果您想发布主要版本,则应使用 mvn versions:set 1.1.0-SNAPSHOT 将版本移至 "manually"。
Maven 使用两个概念:您有一个快照或一个版本。这些名称具有很强的误导性,我会相应地调用它们:temporary_candidate 和 permanent_version.
快照似乎是版本化的,有点,但如果您使用存储库(如 Nexus 等),您会注意到快照旨在仅保存最近的几个迭代,其中较旧的快照会很快被删除。此外,在下载快照时,很明显预期的用途是始终使用最新的快照。发布永久保留;这些版本预计将按版本号下载。
版本号不适用于开发人员。它是开发人员和测试人员以及部署团队和最终用户之间的沟通工具。
测试人员报告"to replicate this bug: (1) deploy version 2.0.44-SNAPSHOT, (2) click XYZ button"没有意义。该报告在“2.0.44-SNAPSHOT”部分被破坏,因为它不是一个真实的版本号,测试人员应该预期“2.0.44-SNAPSHOT”下的代码已经更改并且现在有完全不同的错误。每次重新部署时它都会改变。
预期用途是仅在正在进行对话时向 tester/user 显示 SNAPSHOT。情况一好,你就放手。
Jenkins 有一个非常有用的发布插件。它允许更改版本号并执行所有发布任务(包括但不限于 maven 发布插件)。