【问题标题】:Best practice to change version of dependencies in nexus在 nexus 中更改依赖项版本的最佳实践
【发布时间】:2017-06-14 18:35:07
【问题描述】:

考虑一个在其他项目中使用的项目,该项目的版本为 1.0,并且存在于 Nexus 中。

之后,在这个项目中进行了一些更改。 现在有两种解决方案:

  1. 将项目的版本增加到2.0,并从Nexus中删除版本1.0。当开发者尝试从 Nexus 获取版本为1.0 的依赖项时,他们会收到此版本不存在的错误,需要将版本更改为2.0

  2. 更改此项目的功能并通知工作人员已完成一些更改,但这根本不是惯例。

Maven 和 Nexus 中是否有任何功能可以简化此任务并使这一切都发生在后端,这样开发人员就无法做任何事情,或者这不可能?

【问题讨论】:

  • 为什么要删除1.0?版本控制的目的是禁止更改已发布产品中的内容。假设你可以,两个开发人员甚至不能确信在相同版本中使用相同的库运行完全相同的代码。
  • 好的@Tunaki,考虑到我没有删除版本并且我做了一些更改,开发人员如何知道这些更改?我知道如果开发人员第一次从nexus 下载一个jar 存储在.m2 文件夹中,然后他使用这个具有这个功能的jar,所以如果我更改功能并重新安装这个jar,开发人员仍然可以使用旧功能,因为他使用来自 .m2 而不是来自 nexus 服务器的 jar,并且因为 maven 没有更改 jar,因为它总是以相同的 GAV 存在!我认为这是 maven 的政策我错了?
  • 稳定性是这里的关键词。如果有人使用 1.0 版,他们的构建必须继续工作。也许 1.0 有问题,但没有理由完全删除它。我假设该项目已记录在案,有一个网站等...在那里显示最新版本,发送邮件,交流。
  • 是的,我和你在一起@Tunaki,我只是想促进这项任务而已,那么解决方案是什么,或者它仍然是通过消息通知他们的旧方式:(,我想maven 可以做得更好,你对我的建议
  • Maven 不能替代开发人员之间的通信。这从来都不是 Maven 历史上的意图。如果您将新版本部署到 nexus,您必须通知依赖此项目的开发人员。有几种方法可以做到这一点。

标签: maven nexus


【解决方案1】:

如果你有一个旧版本的工件不能再被使用,因为它有一些危险的错误,或者它不适用于新的数据库结构或类似的东西,它可能是建议将它移动到一些非公共的 Nexus 存储库(并从构建服务器的本地存储库中删除它),以便没有人可以将它用于发布构建(人们可以将它用于本地构建,但这通常并不危险)。

如果您想管理整个公司的标准版本,最好有一个父 pom 或一些 bom,它们在 <dependenyManagment> 部分收集版本并且可以被开发人员包含在内。这样,您只需要通知他们更改一个版本号(即父pom或bom之一)而不是许多。

仍然存在人们不阅读公司通讯的问题。我知道许多 jars 开发人员针对非常旧版本的依赖项编译和测试他们的源代码,而 war/ear(包括 jar)使用新版本的问题。

【讨论】:

    猜你喜欢
    • 2011-10-15
    • 2019-08-24
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2018-03-03
    • 2011-06-11
    • 2010-12-11
    相关资源
    最近更新 更多