【问题标题】:Nexus / Maven - The POM for ... is missing, no dependency information availableNexus / Maven - 的 POM 丢失,没有可用的依赖信息
【发布时间】:2015-04-05 14:42:46
【问题描述】:

在构建我的 maven java 项目时,我遇到了一堆警告,例如“...的 POM 丢失,没有可用的依赖项信息”。

工件存储在我们公司托管的 Nexus 服务器中。在我在 Nexus 中安排一个任务“从存储库中删除版本”以清理它并仅维护最后两个版本之后,问题就开始了。

因此,我收到了有关旧版本的警告:

[WARNING] The POM for xpto:jar:jar:8.16.1 is missing, no dependency information available
[WARNING] The POM for xpto:jar:jar:8.17.0 is missing, no dependency information available
[WARNING] The POM for xpto:jar:jar:8.18.0 is missing, no dependency information available
[WARNING] The POM for xpto:jar:jar:8.19.0 is missing, no dependency information available

一旦我有许多组件项目并且版本是常量,当编译一些使用这些组件的项目时,我会收到很多这样的警告。

你们是否提出了一些方法来避免这些警告或在客户端执行一些可以重新解析或重新索引依赖项的目标?

问候,

【问题讨论】:

  • 版本永远不应该被删除,因为版本是不可变的。如果您已删除它们,您可以检查它们是否在 nexus Trash 中,否则您应该有一个很好的备份。如果这些工件来自 Maven Central 等其他存储库,您可以打开对 Central 的访问权限,然后重新构建需要它们的项目,以便再次下载它们。
  • 就我而言,我不需要保留旧版本并支持回滚。看一下:support.sonatype.com/entries/… Nexus 这边没问题。但是 Maven 客户端正在向我显示警告。
  • 您的关系中没有它们,这表明您需要它们,这意味着您不应该删除它们。解决方案:如果它们来自其他存储库,则重建使用它们的项目。警告意味着您需要它们,但您的存储库中没有它们。
  • 一旦这些工件不公开,我就没有其他存储库了...还有其他选择吗?
  • 我也尝试删除本地存储库,但没有任何改变......

标签: java maven pom.xml nexus


【解决方案1】:

Sometimes Releases are Disposable

如上所述,根据您的业务,您可能不需要将旧版本存储在自己的存储库中。我被包括在这个场景中。

例如,为了维护我的组件项目中的最后两个版本,应遵循一些步骤以避免 maven [WARNING] 消息:

1. 从存储库中删除版本

您应该向您的存储库添加一个任务以维护唯一的 n 个发布项。这可以通过以下方式完成:

  • 转到 Sonatype Nexus > 管理 > 计划任务 > 添加
  • 将“任务类型”设置为“从存储库中删除版本”
  • 设置您自己的参数(电子邮件、重复周期等)

2. 重建maven元数据文件

这个问题的“王牌”是重建 maven 元数据文件 (maven-metadata.xml),一旦它们要维护旧版本信息,直到它们要重建。这可以通过以下方式完成:

  • 转到 Sonatype Nexus > 管理 > 计划任务 > 添加
  • 将“任务类型”设置为“重建 Maven 元数据文件”
  • 设置您自己的参数(电子邮件、重复周期等)
  • 注意:此任务必须在“从存储库中删除版本”之后运行

3. 本地仓库

现在,本地存储库需要知道元数据文件已更新。这可以通过参数来完成:

  • mvn -U:

    -U,--update-snapshots 强制检查更新 远程发布和快照

  • 例如:

    mvn -U 清理包

参考文献

【讨论】:

    【解决方案2】:

    检查您的settings.xml,即在 bash 中导出:

    export MVN_SETTINGS=~/.m2/settings.xml 
    

    当您无法从 Internet 下载依赖项时,通常会出现此警告。

    【讨论】:

      最近更新 更多