我使用了maven模块&foo-common'。我目前正在使用SNAPSHOT版本控制。我希望每当这个模块发生任何变化时,它的版本就会使用jenkins的build-number增加并将其部署到远程存储库。 但是,问题是,如果我当前版本是1.0.40-SNAPSHOT然后如果我想增加主要版本,那么版本将变为2.0.41-SNAPSHOT,这没有任何意义。 有人可以建议一个更好的方法吗?
答案 0 :(得分:0)
使用maven的想法是你使用mvn release插件将版本从SNAPSHOT移到发布。
所以,如果你这样做(假设你有正确的pom):
mvn release:prepare release:perform
这将删除已发布版本的SNAPSHOT,在您的示例中这将是1.0.40,然后它将使用标记在源代码管理中标记此版本,然后它将完成的工件推送到您的发布存储库中标签,然后它将为下一个SNAPSHOT移动版本,在你的情况下将是1.0.41-SNAPSHOT。
如果你想做一个主要的版本发布,你应该使用mvn版本“手动”移动版本:set 1.1.0-SNAPSHOT。
答案 1 :(得分:0)
Maven使用两个概念:要么是快照,要么是发布。这些名称极具误导性,我会相应地称它们为:temporary_candidate和permanent_version。
快照似乎是版本化的,但是如果您使用存储库(如Nexus等),您会注意到快照只是为了保存一些最近的迭代,旧的快照会被快速删除。此外,在下载快照时,显然预期用途是始终使用最新的快照。这些发布是永久性的;预计将按版本号下载这些版本。
版本号不适用于开发人员。它是开发人员与测试人员,部署团队和最终用户之间的通信设备。
测试人员报告"复制此错误没有意义:(1)部署版本2.0.44-SNAPSHOT,(2)单击XYZ按钮"。该报告在" 2.0.44-SNAPSHOT"部分,因为它不是真正的版本号,测试人员应该指出下面的代码" 2.0.44-SNAPSHOT"已经改变,现在有完全不同的错误。它每次重新部署时都会发生变化。
预期用途是仅在有正在进行的对话时向测试人员/用户显示SNAPSHOT。一旦情况清除,你就会释放。
Jenkins有一个非常有用的Release Plugin 。它允许更改版本号并执行所有发布任务(包括但不限于maven release pluigin)。