首页 文章

增加maven模块版本

提问于
浏览
1

我使用maven模块'foo-common' . 我目前正在使用SNAPSHOT版本控制 . 我希望每当这个模块发生任何变化时,它的版本就会使用jenkins的build-number增加并将其部署到远程存储库 . 但是,问题是,如果我当前版本是1.0.40-SNAPSHOT然后如果我想增加主要版本,那么版本将变为2.0.41-SNAPSHOT,这没有任何意义 . 有人可以建议一个更好的方法吗?

2 回答

  • 0

    Maven使用两个概念:要么有快照,要么有发布 . 这些名称极具误导性,我会相应地称它们为:temporary_candidate和permanent_version .

    快照似乎是版本化的,但是如果您使用存储库(如Nexus等),您会注意到快照只是为了保存一些最近的迭代,旧的快照会被快速删除 . 此外,在下载快照时,显然预期用途是始终使用最新的快照 . 这些版本是永久保留的;预计将按版本号下载这些版本 .

    版本号不适用于开发人员 . 它是开发人员与测试人员,部署团队和最终用户之间的通信设备 .

    测试人员报告“复制此错误是没有意义的:(1)部署版本2.0.44-SNAPSHOT,(2)单击XYZ按钮” . 该报告在“2.0.44-SNAPSHOT”部分被打破,因为它不是真正的版本号,测试人员应该认为“2.0.44-SNAPSHOT”下的代码已经改变,现在有完全不同的错误 . 它每次重新部署时都会发生变化 .

    预期用途是仅在有正在进行的对话时向测试人员/用户显示SNAPSHOT . 一旦情况清除,你就会释放 .

    Jenkins has a very useful Release Plugin . 它允许更改版本号并执行所有发布任务(包括但不限于maven release pluigin) .

  • 0

    与maven的想法是你使用mvn发布插件将版本从SNAPSHOT移动到发布 .

    所以,如果你这样做(假设你有正确的pom):

    mvn release:prepare release:perform
    

    这将删除发布版本的SNAPSHOT,在您的示例中这将是1.0.40,然后它将使用标记在源代码管理中标记此版本,然后它将完成的工件推送到标记中定义的发布存储库,然后它将为下一个SNAPSHOT移动版本,在你的情况下将是1.0.41-SNAPSHOT .

    如果你想做一个主要的版本发布,你应该使用mvn版本“手动”移动版本:set 1.1.0-SNAPSHOT .

相关问题