如何引导Maven版本插件?

如何引导Maven版本插件?,maven,version,Maven,Version,我们的项目X有一个依赖项Y。我们希望使用Maven版本插件将Y更新到最新的可用版本 当Y的版本被设置且有效时(例如:到2),我们没有问题 但是,我们不确定如何引导该过程。最初,我们不知道什么可能是Y的有效版本。如果指定了无效版本(例如:12345),则会出现以下错误 [ERROR] [ERROR] Some problems were encountered while processing the POMs: [ERROR] Non-resolvable import POM: Could n

我们的项目X有一个依赖项Y。我们希望使用Maven版本插件将Y更新到最新的可用版本

当Y的版本被设置且有效时(例如:到2),我们没有问题

但是,我们不确定如何引导该过程。最初,我们不知道什么可能是Y的有效版本。如果指定了无效版本(例如:12345),则会出现以下错误

[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] Non-resolvable import POM: Could not find artifact group:Y:pom:12345 in <repo> (<http://repo-url/path>)
[ERROR][ERROR]处理POM时遇到一些问题:
[错误]不可解析的导入POM:在()中找不到工件组:Y:POM:12345
这是一个真正的问题。我们收到了另一队的来信。他们交付工件的Maven存储库包含他们最新的10个版本(例如:132-142)

我们可以手动引导这个过程,但它不能与我们在实践中拥有的数十个依赖项一起扩展

潜在解决方案

我们无法实施任何这些解决方案。它们是按优先顺序列出的。有什么想法吗

  • 有没有办法在不从pom.xml下载任何依赖项的情况下运行versions插件
  • 有没有办法读取依赖项的最新版本(版本插件、其他插件)。然后我们可以在Maven之外更新pom.xml
  • 还有别的吗

如果您使用Maven,消失发布版本是一个问题,因为通常假定发布版本不会被删除(构建稳定性)


如果您对删除旧工件的工件Y团队没有影响,那么您应该考虑使用Nexus/Artifactory作为中间的代理。在那里,您可以保留构建时使用的所有版本,这样您就不会遇到问题中描述的问题。

正确答案。然而,这可能不是我们想要建立的精神。我们希望用可重复性(例如:保留大量旧工件)换取可修复性(例如:快速创建/部署新工件的能力)。我们使用快照版本进行开发,因此无需在每次发生更改时进行更新。您是否考虑过使用快照版本?或者你只想要发布版本有什么特别的原因吗?这是个好主意。但是,我们不希望使用快照版本,以便可以明确地引用到目前为止创建的任何版本。当我们检查一个构建时,依赖项版本可能不再可用,但我们确切地知道它们当时是什么以及包含什么。我现在正在实现自定义脚本,以实现版本插件在工作时的功能。您可以这样做,但请注意,删除发布版本意味着它们可能在某些本地存储库中可用,也可能在某些本地存储库中不可用,并且构建可能会意外工作和中断。是的,这是一个很好的建议。我们知道这一点。我们有一个脚本来发现最新版本并相应地修改POM:我们可以从您提到的问题中恢复。使用快照可以通过提供一个版本来解决这个问题,但是它的内容是不可追踪的。这对我们的用例来说更糟。
<dependency>
    <groupId>group</groupId>
    <artifactId>Y</artifactId>
    <version>3</version>
</dependency>
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] Non-resolvable import POM: Could not find artifact group:Y:pom:12345 in <repo> (<http://repo-url/path>)