Maven下载已将.lastUpdated作为扩展名


80

我有一个带有m2eclipse和颠覆性的Eclipse设置。我已经从svn导入了一个maven2项目。但是我收到一条错误消息,指出缺少大量工件(例如:缺少工件org.springframework:spring-test:jar:3.0.1.RELEASE:test)。

如果在存储库中查看,我会在其中看到jar文件,但它们的扩展名为.lastUpdated。为什么Maven将.lastUpdated附加到jar中?更重要的是:我该如何解决?

在我的POM中没有提及lastUpdated类型。

Answers:


59

这些文件向Maven表示它试图通过下载获取档案,但未成功。为了节省带宽,在经过文件中编码的特定时间段之前,它将不会再次尝试这样做。命令行开关-U强制maven在重试周期之前执行更新。如果您尝试在断开网络连接的情况下进行构建,则可能有必要。

删除文件的方法适用于大多数版本的maven,但是由于文件是maven的内部纪念品,因此我不建议使用此方法。不能保证此信息不会在其他地方引用或保留,并且这种操纵可能会损坏系统。


我尝试了mvn -U clean,但是并没有解决问题。我想念什么吗?
MiguelMunoz

作为主题的新手,您在第一段中的最后一句话听起来像是我的矛盾-如果您尝试在断开网络连接的情况下进行构建,这可能是必要的。如果我在断开连接的情况下尝试尝试,则-U根据我对您所说内容的解释,将尝试从远程存储库下载并失败。
Sandeepan Nath

我的意思是,“如果您在断开网络连接的情况下尝试构建,并且已经设置了标记,则设置-U可能很有必要。”
约恩·盖伊·苏斯(JörnGuySüß)

14

正如rperez所说,我曾经删除所有这些.lastUpdated文件。在Linux中,我创建了一个小脚本来保持简单

find -name \*.lastUpdated -exec rm -fv {} +

只需创建一个包含先前内容的文件,然后将其放在本地Maven存储库中即可。通常是这样~/.m2/repository


2
在zsh中:rm ~/.m2/repository/**/*.lastUpdated
Dacav

3
你也可以用查找的delete标志删除,而不是找到的文件,exec荷兰国际集团rm的结果。例如,find ~/.m2 -name *.lastUpdated -delete
spaaarky21

7

我安装了Maven2,并从命令行运行mvn编译。这似乎已经解决了问题


使用命令行编译为我解决了此问题。我认为这可能是一个m2eclipse问题。
TAN70 2012年

1
在2017年运行于Windows 7 Professional SP 1上,我在Eclipse插件上遇到了类似的问题,并放弃了它,转而使用CLI,它提供了更完整,可用的报告,可以将其保存,导入到Excel和生成各种有用的报告,涵盖丢失的软件包,未下载的文件,未配对的POM和JAR以及其他有用的统计信息。
David A. Gray,

2

如果您遇到此问题并且正在使用Nexus,则可能是因为您定义了路由规则,这是不正确的。我自己打了这个,下载的文件被正确命名,并以正确的URL命名,但是都带有.lastUpdated扩展名和错误消息作为内容。


1

您可能对要从存储库中检索到的某些工件有问题。例如spring框架有自己的存储库。当无法完全下载工件时,将附加此扩展名。将spring框架存储库添加到pom或settings.xml中,删除包含损坏的jar的文件夹,然后重新开始


同意。代替有效的pom或jar,通常以lastUpdate结尾的pom或jar只有2k大小,其内容更像是错误日志。通常是“无法在...上收集依赖项”的结果
Tiina

这是一种有趣的思考方式。我一直认为它们是单独的实体(最后更新的文件),而不是它们所报告的JAR或POM。同样,我将MyDotNetAssembly.exe.config视为与MyDotNetAssembly.exe不同的文件类型。
David A. Gray,

0

打开终端,导航到Eclipse的项目目录并运行:

mvn install

如果mvn install没有更新您的依赖关系,请使用强制更新的开关对其进行调用:

mvn install -U

与删除“ .lastUpdated”时篡改Maven文件相比,这是一种更安全的方法。


1
我有同样的问题,mvn install -U没有帮助。mvn clean install没有做的工作,以及
roxch

0

在.m2 / repository目录中使用此命令来重命名所有文件:

for file in `find . -iname *.lastUpdated`; do renamed=$(echo $file | rev | cut -c13- | rev); echo renaming: $file to $renamed; mv $file $renamed; done

这对于不再次下载所有源代码很有用。

这不起作用... .jar丢失。:(

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.