无法生成项目,因为缓存的依赖项(java)

无法生成项目,因为缓存的依赖项(java),java,maven,Java,Maven,我试图将我的项目打包到一个jar中,每当我尝试这样做时,它都无法编译,因为我不再使用旧的缓存依赖项 无法解析位于的项目的依赖项。htl:testmonitoring client:jar:1.18.47:未能收集依赖项[旧依赖项]中的已缓存在本地存储库中,在经过中心更新间隔或强制更新之前,将不会重新尝试解析->[帮助1] 转到主目录并删除.m2(隐藏目录)文件夹,更新项目并运行它。如果您没有使用依赖项,则应将它们从pom中删除。如果pom中没有依赖项,那么(大多数情况下)Maven不会尝试解决它

我试图将我的项目打包到一个jar中,每当我尝试这样做时,它都无法编译,因为我不再使用旧的缓存依赖项

无法解析位于的项目的依赖项。htl:testmonitoring client:jar:1.18.47:未能收集依赖项[旧依赖项]中的已缓存在本地存储库中,在经过中心更新间隔或强制更新之前,将不会重新尝试解析->[帮助1]


转到主目录并删除.m2(隐藏目录)文件夹,更新项目并运行它。

如果您没有使用依赖项,则应将它们从pom中删除。如果pom中没有依赖项,那么(大多数情况下)Maven不会尝试解决它们,构建也不会失败

如果您已经从pom中删除了它们,但maven仍在尝试解决它们,那么这可能意味着某些东西正在过渡地使用它们。您可以使用
mvn dependency:tree

如果出于任何原因构建需要解决这些问题,那么最简单的方法就是从本地repo中删除“缓存失败”。最简单的方法是删除整个~/.m2/repository目录(及其所有子目录和内容),这可能是安全的,因为maven将从远程重建它。唯一的问题是,如果您在本地repo中有/需要任何远程设备上都不存在的工件。如果不是这样的话,那么这样做不会造成任何损失,尽管它会使下一个构建花费更长的时间,因为它必须再次下载所有内容

如果不能删除整个本地回购,那么仍然可以跟踪导致问题的特定工件。例如,如果您的工件groupId=com.some.comasny artifactId=someArtifact,version=1.0.0有问题,那么您可以删除~/.m2/repository/com/some/company/someArtifact/1.0.0(及其所有内容)


注意,这假设Maven能够从配置的远程服务器解析依赖关系。如果它们在您配置的远程设备中不可用,那么您可能必须解决这个问题(通过将它们添加到您的本地回购管理器,通过添加具有工件的公共回购,等等)。

只需尝试在$HOME/.m2/repository/中删除即可?这与git无关,只与java相关,因为Maven主要是一个基于java的工具;如果
mvn-U包
(或您的目标是什么)有帮助,我建议您更新tagsSee。
-U
选项虽然在文档中表示“更新快照”,但也强制对元数据进行常规复查。删除整个.m2目录是危险的建议;存储库不是唯一可能存在的东西。感谢您的快速回答:)我删除了我的C:\Users\{username}\.m2文件夹中的所有内容,但仍然得到相同的错误。我不明白这是怎么发生的,因为缺少的依赖项不在存储库文件夹中。您可能仍然会出现错误,但如果您的本地回购被删除,那么您就不会出现相同的错误(至少在下一次运行时不会出现);如果没有本地repo,则不会出现缓存失败。Maven客户机IMO的一个问题是,如果您遇到了一个错误,并且开始出现不同的错误,那么如果您浏览输出,通常会给人留下相同错误的印象(bc错误消息很长,并且所有错误消息的开头都相同)。所以我可以想到三种可能性:1)有可能下一次运行实际上给出了一个不同的错误,表示工件无法解决。这可能意味着您没有配置必要的远程设备。请注意,在获得该错误后重新运行将使您返回“未能获取已缓存的数据”错误。您可以通过在以下位置搜索工件来了解您需要什么repo:2)删除.m2目录时,您可能已经删除了所需的配置信息(例如远程repo配置)。这就是为什么我说要删除.m2目录下的存储库,而不是.m2目录下的存储库(另请参见我对Mayank Sharma答案的评论)。这会让你回到第一个问题。最可能的情况是,如果您在settings.xml中配置了本地repo管理器(如Nexus或Artifactory)…3)尽管我认为这种可能性要小得多,但您的本地Maven配置可能是非标准的,并且您的repo位于不同的路径(不是~/.m2/存储库)。您可以使用
mvn帮助:evaluate-Dexpression=settings.localRepository