【问题标题】:Maven downloads have .lastUpdated as extensionMaven 下载具有 .lastUpdated 作为扩展名
【发布时间】:2011-02-01 12:30:20
【问题描述】:

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

如果我查看我的存储库,我会在那里看到 jar 文件,但它们有一个额外的扩展名 .lastUpdated。为什么 maven 将 .lastUpdated 附加到 jar 中?更重要的是:我该如何解决这个问题?

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

【问题讨论】:

    标签: eclipse maven-2


    【解决方案1】:

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

    删除文件的方法适用于大多数版本的 maven,但由于文件是 maven 的内部纪念品,我不推荐这种方法。无法保证此信息不会在其他地方被引用或保存,并且此类操作可能会损坏系统。

    【讨论】:

    • 我试过 mvn -U clean ,但没有解决问题。我错过了什么吗?
    • 您在第一段中的最后一句话对我这个主题的新手来说听起来很矛盾 - 如果您尝试在与网络断开连接的情况下进行构建,这可能是必要的。如果我在断开连接时尝试,那么 -U 将尝试从远程存储库下载并且会失败,根据我对您所说的解释。
    • 我的意思是,“如果您在与网络断开连接的情况下尝试构建并且标记已设置,则可能需要设置 -U。”
    • 那你推荐什么?就这样离开,然后停止项目?
    【解决方案2】:

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

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

    只需使用先前的内容创建一个文件并将其放在本地 Maven 存储库中。通常是~/.m2/repository

    【讨论】:

    • 在 zsh 中:rm ~/.m2/repository/**/*.lastUpdated
    • 您也可以只使用 find 的 delete 标志来删除它找到的文件,而不是在结果上使用 execing rm。例如,find ~/.m2 -name *.lastUpdated -delete
    【解决方案3】:

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

    【讨论】:

    • 使用命令行编译为我解决了这个问题。我认为这可能是一个 m2eclipse 问题。
    • 在 Windows 7 Professional SP 1 上运行,2017 年,我遇到了与 Eclipse 插件类似的问题,并放弃了它,转而使用 CLI,它提供了更完整、可用的报告,我可以保存、导入 Excel 并生成各种有用的报告,包括丢失的包、未下载的文件、未配对的 POM 和 JAR 以及其他有用的统计信息。
    【解决方案4】:

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

    【讨论】:

    • 同意。通常以 lastUpdate 结尾的 pom 或 jar 不是有效的 pom 或 jar,大小只有 2k,其内容更像是错误日志。通常是“未能在...处收集依赖项”的结果
    • 这是一种有趣的思考方式;我一直认为它们是独立的实体(最后更新的文件),而不是它们报告的 JAR 或 POM。同样,我认为 MyDotNetAssembly.exe.config 是与 MyDotNetAssembly.exe 不同的文件类型。
    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

      mvn install
      

      如果mvn install 没有更新您的依赖项,则使用开关调用它以强制更新:

      mvn install -U
      

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

      【讨论】:

      • 我有同样的问题,mvn install -U 没有帮助。 mvn clean install 没有做好这项工作
      【解决方案7】:

      在 .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 丢失了。 :(

      【讨论】:

        【解决方案8】:

        遇到这个问题我该怎么办:

        确保您拥有最新的“ma​​ven-source-plugin”插件版本: https://maven.apache.org/plugins/maven-source-plugin/usage.html

        $ mvn source:jar install 
        

        现在,如果文件 *.lastUpdate 存在于您的本地 ~/.m2/repositories/your-lib/0.0.1/ 目录中,您可以将其删除,然后再次运行上述命令。

        【讨论】:

          【解决方案9】:

          这是未能从存储库中成功提取的副作用。要将所需的实际内容放入存储库,请检查 pom 文件中存储库/存储库的正确路径,并解决证书/安全问题(如果有)。几乎总是这些问题中的一个或另一个。

          没有必要删除 .lastUpdated 条目,这样做并不能解决您的问题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-01-25
            • 1970-01-01
            • 1970-01-01
            • 2018-03-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多