【问题标题】:Maven archive in .m2 doesn't install dependencies.m2 中的 Maven 存档不安装依赖项
【发布时间】:2022-01-14 18:23:41
【问题描述】:

我已将一个现有项目从我们的 Github 存储库下载到我的本地驱动器中。

但是,当我运行命令时:

mvn clean install -U

由于缺少依赖项,它会引发一些编译错误。

[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /C:/analyticsDev/dev3/dashboard/src/main/java/com/sick/dd/controller/DashboardController.java:[945,59] cannot find symbol
  symbol:   method isValidFileName(java.lang.String)
  location: class com.sick.ap.components.filemanager.util.FileUtils
[ERROR] /C:/analyticsDev/dev3/dashboard/src/main/java/com/sick/dd/controller/DashboardController.java:[948,68] cannot find symbol
  symbol:   variable INVALID_FILENAME
  location: class com.sick.ap.components.loginmodule.settings.configuration.constant.ApLoginUserConstants
[INFO] 2 errors

我通过从本地 .m2 目录中删除相关依赖项来重试,但是依赖项没有重新出现,并且编译失败并出现相同的错误。

我在 github 中检查了导致错误的组件的来源,它是最新的,所以这不是问题。

这是相关的 .m2 目录组件:

如您所见,参赛日期是从 11 月下旬开始,即不是今天。这可能是因为我在那天的实际项目上运行了mvn clean install -U

maven 的重点是为您处理依赖关系。知道为什么这里没有发生这种情况吗?

这是mvn clean install -U 命令输出的典型摘录。我不能全部提供,因为它超出了发布限制。请注意,对 metadata.xml 消息的访问是它始终在其他项目中发出的警告,并且不会阻止编译:

https://artifactory.sick.com:443/artifactory/gbc05-gus-rpc-bip-releases-maven-local/com/sick/bip/i18nl10n/1.6.0.0-SNAPSHOT/maven-metadata.xml , ReasonPhrase:.
[WARNING] Failure to transfer com.sick.bip:i18nl10n:1.6.0.0-SNAPSHOT/maven-metadata.xml from https://artifactory.sick.com:443/artifactory/gbc05-gus-rpc-bip-snapshots-maven-local/ was cached in the local repository, resolution will not be reattempted until the update interval of gbc05-gus-rpc-bip-snapshots-maven-external has elapsed or updates are forced. Original error: Could not transfer metadata com.sick.bip:i18nl10n:1.6.0.0-SNAPSHOT/maven-metadata.xml from/to gbc05-gus-rpc-bip-snapshots-maven-external (https://artifactory.sick.com:443/artifactory/gbc05-gus-rpc-bip-snapshots-maven-local/): Access denied to: https://artifactory.sick.com:443/artifactory/gbc05-gus-rpc-bip-snapshots-maven-local/com/sick/bip/i18nl10n/1.6.0.0-SNAPSHOT/maven-metadata.xml , ReasonPhrase:.
[WARNING] Failure to transfer com.sick.bip:i18nl10n:1.6.0.0-SNAPSHOT/maven-metadata.xml from https://artifactory.sick.com:443/artifactory/gbc05-gus-rpc-pa-product-maven-local/ was cached in the local repository, resolution will not be reattempted until the update interval of gbc05-gus-rpc-pa-product-maven-external has elapsed or updates are forced. Original error: Could not transfer metadata com.sick.bip:i18nl10n:1.6.0.0-SNAPSHOT/maven-metadata.xml from/to gbc05-gus-rpc-pa-product-maven-external (https://artifactory.sick.com:443/artifactory/gbc05-gus-rpc-pa-product-maven-local/): Access denied to: https://artifactory.sick.com:443/artifactory/gbc05-gus-rpc-pa-product-maven-local/com/sick/bip/i18nl10n/1.6.0.0-SNAPSHOT/maven-metadata.xml , ReasonPhrase:.
[WARNING] Failure to transfer com.sick.bip:i18nl10n:1.6.0.0-SNAPSHOT/maven-metadata.xml from https://artifactory.sick.com:443/artifactory/gbc05-gus-rpc-bip-releases-maven-local/ was cached in the local repository, resolution will not be reattempted until the update interval of gbc05-gus-rpc-bip-releases-maven-external has elapsed or updates are forced. Original error: Could not transfer metadata com.sick.bip:i18nl10n:1.6.0.0-SNAPSHOT/maven-metadata.xml from/to gbc05-gus-rpc-bip-releases-maven-external (https://artifactory.sick.com:443/artifactory/gbc05-gus-rpc-bip-releases-maven-local/): Access denied to: https://artifactory.sick.com:443/artifactory/gbc05-gus-rpc-bip-releases-maven-local/com/sick/bip/i18nl10n/1.6.0.0-SNAPSHOT/maven-metadata.xml , ReasonPhrase:.

【问题讨论】:

  • 这看起来不像是maven依赖错误,更像是编译器错误。您可以从日志中发布更多上下文吗?通常,如果您错过了依赖项,Maven 会告诉您无法下载哪个组 ID 和工件 ID,以及从哪个 URL 下载。
  • 胡乱猜测,可能master分支中最新代码的状态没有编译。您是否应该检查特定标签或分支(例如,最新发布版本)才能进行编译?为了确定,我们需要更多的上下文。
  • 这很可能不是编译问题 - 我检查了 github 中的源代码,变量在那里。
  • 你的日志字面上写着[ERROR] COMPILATION ERROR
  • 我会发布一些上下文 - 请注意有很多 metadata.xml 警告,但这些都是正常的,我没有收到编译错误。

标签: java spring maven


【解决方案1】:

您上传的错误日志非常明确(我删除了一些文本以使错误更加明显):

[WARNING] Failure to transfer ... from https://artifactory.sick.com:443/.... 
was cached in the local repository, resolution will not be reattempted until the update interval of gbc05-gus-rpc-bip-snapshots-maven-external has elapsed or updates are forced. 
Original error: Could not transfer metadata ... from/to gbc05-gus-rpc-bip-snapshots-maven-external (https://artifactory.sick.com:443/....): 
Access denied to: https://artifactory.sick.com:443/artifactory/..... , ReasonPhrase:.

在最近的过去,您的 Maven 对您的 Nexus 存储库有一个错误“拒绝访问”,并且它已被缓存,所以现在当您执行 Maven 命令时,它会因缓存错误而失败。 您正在使用-U,所以这应该会强制下载,但可以肯定的是,您可以删除您的~/.m2/repository 并重试。

您需要弄清楚为什么您对这些 URL 的访问被拒绝?尝试在浏览器中加载 Nexus,看看它是否在那里工作。

我认为主要问题是您的 Maven 缓存了旧版本并且无法下载当前部署的工件,因此它使用本地工件作为后备,但它们包含无法编译的代码。所以从某种意义上说,这是一个依赖问题,但 Maven 将其显示为一个编译问题。

【讨论】:

  • 我删除了.m2,但是这次在第一个公司平台组件上找不到,新的m2目录显示没有公司资产。我知道这表明访问被拒绝问题,明天我将与管理员一起检查。我已经收到这些访问被拒绝错误一段时间了,管理员说我有完全访问权限。当我刚才尝试通过输出中的 URL 登录时,它显示了无效的用户名/密码。这很令人沮丧,但这是一个了解问题的好机会,因为它是一个新项目。
  • 是的,这是有道理的。您可能在不久前缓存了工件并继续使用过时的代码,但现在您遇到了第一个严重的不兼容性和第一个编译错误。也许您只需要新的凭据就可以了。
  • 是的,我希望如此。我没有使用过时的代码,我正在下载依赖项的源代码并在本地重新编译它。我宁愿不必那样做。我会让你知道,并接受答案,假设这确实是问题所在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
相关资源
最近更新 更多