我有一个带有m2eclipse和颠覆性的Eclipse设置。我已经从svn导入了一个maven2项目。但是我收到一条错误消息,指出缺少大量工件(例如:缺少工件org.springframework:spring-test:jar:3.0.1.RELEASE:test)。
如果在存储库中查看,我会在其中看到jar文件,但它们的扩展名为.lastUpdated。为什么Maven将.lastUpdated附加到jar中?更重要的是:我该如何解决?
在我的POM中没有提及lastUpdated类型。
Answers:
这些文件向Maven表示它试图通过下载获取档案,但未成功。为了节省带宽,在经过文件中编码的特定时间段之前,它将不会再次尝试这样做。命令行开关-U强制maven在重试周期之前执行更新。如果您尝试在断开网络连接的情况下进行构建,则可能有必要。
删除文件的方法适用于大多数版本的maven,但是由于文件是maven的内部纪念品,因此我不建议使用此方法。不能保证此信息不会在其他地方引用或保留,并且这种操纵可能会损坏系统。
正如rperez所说,我曾经删除所有这些.lastUpdated文件。在Linux中,我创建了一个小脚本来保持简单:
find -name \*.lastUpdated -exec rm -fv {} +
只需创建一个包含先前内容的文件,然后将其放在本地Maven存储库中即可。通常是这样~/.m2/repository。
rm ~/.m2/repository/**/*.lastUpdated
delete标志删除,而不是找到的文件,exec荷兰国际集团rm的结果。例如,find ~/.m2 -name *.lastUpdated -delete
我安装了Maven2,并从命令行运行mvn编译。这似乎已经解决了问题
您可能对要从存储库中检索到的某些工件有问题。例如spring框架有自己的存储库。当无法完全下载工件时,将附加此扩展名。将spring框架存储库添加到pom或settings.xml中,删除包含损坏的jar的文件夹,然后重新开始
在.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丢失。:(