工作中的问题,而不是在家中的问题:mvn 版本:display-dependency-updates

问题描述

当我在家运行 mvn versions:display-dependency-updates 时,我得到了预期的结果(显示哪些依赖项具有新版本的输出)。但是,当我在工作中运行它时,它使用内部 Maven 存储库(Nexus Repository Manager 2.14.13-01),结果总是显示“依赖项中没有更新版本的依赖项”。

但是,如果我通过 Web 界面进入,我可以看到存储库中有更新的版本。我猜他们设置的东西不正确,如果我能提供给他们帮助解决这个问题的任何信息,我将不胜感激。

这是使用详细选项的输出

[INFO] --- versions-maven-plugin:2.8.1:display-dependency-updates (default-cli) @ TestProgram) ---
[INFO] The following dependencies in Dependencies are using the newest version:
[INFO]   commons-beanutils:commons-beanutils ............................ 1.9.1
[INFO]   org.apache.commons:commons-collections4 .......................... 4.0
[INFO]   org.apache.commons:commons-compress ............................. 1.15
[INFO]
[INFO] No dependencies in Dependencies have newer versions.

解决方法

你很可能在克隆的 Maven Central 工作,这是存储大多数 Maven 项目的存储库。在这个克隆中,他们拍摄了他们正在使用的内容的快照。通常这是通过 Artifactory 镜像完成的。

基本上是本地 Artifactory 收到请求,然后它重新向 Maven Central 发出请求,缓存本地副本。下次对同一项目提出请求时,将从公司的服务器内提供服务。

似乎发生的事情是组织变更、配置变更或简单的 Internet 连接变更中断了对 Maven Central 的中继请求,现在您对最新项目的所有请求仅显示最新项目在您公司的 Maven 中央镜像中。

有些公司的法律团队已经加入其中,因此他们不会在未审查软件许可的情况下批准提取新软件(甚至是旧软件的新版本)。这降低了开发人员的法律风险,包括可能迫使公司公开其代码或可能需要付费许可证的许可软件。在这些公司中,他们只为一次下载打开镜像、记录依赖项并审查所有下载的软件许可。

如您所想,法律团队很乐意推荐此流程;但是,通常不在开发团队的时间表上。我已经更新了此类软件堆栈,通常需要一到两个月的时间才能获得所有许可证的批准(其中大部分是通过正确的法定代表人获得的,他们可能会阅读每个产品的 Mozilla 公共许可证以最大化计费时间)。

,

抱歉迟到了……最终的解决方案是将存储库的 M2 .settings URL 切换到我公司的非 https 链接。由于我无法更改设置,因此在使用 https URL 时,用于检查版本的调用会收到 HTTP DENIED 错误。切换到常规 http URL 能够纠正此问题,直到网络团队能够以其他方式纠正它为止。