0

项目的第一天和 Maven 的第一天,我已经浪费了很多时间来构建它。

看来问题是这个旧项目有配置、POM 等,其中嵌入了许多损坏的 URL。即 Maven 生成的堆栈跟踪显示了许多在尝试下载项目依赖项时被破坏的 URL。

我只得到了包含 Maven 配置文件的项目源。我没有获得现有的 Maven 存储库、项目依赖库或任何构建环境等。我一直在修改这些文件,但每次构建尝试都没有走得太远。

我是在做一些根本错误的事情,还是这个 Maven 配置真的停留在 2008 年?

更新:

我的 POM 确实停留在 2008 年,也就是说,由于版本控制,它是一个及时的快照,而 Java 世界的其他部分仍在继续。

一些依赖项不再在任何存储库中,其中大部分是已失效的项目,所以我已经停止使用它们。我不得不重写整个 POM。我不得不花费大量时间来调整版本以确保依赖项之间和插件之间的兼容性。经过多番争战;一些插件就是不能共存,互相破坏。

总而言之,这是很多很多小时的努力......对于这个只有一个开发人员的项目来说太多了,我相信我现在才知道足够危险。在这种情况下,优秀的 IDE 构建系统会是更好的选择。

4

1 回答 1

3

ftr 的建议(在评论部分)是正确的:Maven 无法下载某些依赖项,但这并不一定意味着这些依赖项不再存在。可能只是 Maven 配置的 extra-repos 部分现在缺少某些存储库,和/或存在其他一些连接问题(例如错误的代理配置 - 这可能导致您能够访问某些存储库但不能访问其他存储库)。

我遇到过类似的情况,发现虽然最初 Maven 在尝试下载大约 80% 的依赖项时报告了错误,但在对 Maven 的配置进行各种调整后,我最终让它下载了所有的依赖项(除了一个实际上只是某人做的一个自定义 jar,它是直接从本地文件系统获取的,但除此之外)。

这是我要做的:

  • 在 Maven 说它无法下载的所有依赖项中,尝试找出“众所周知”的 2 或 3 个(例如,如果它说它无法下载 Servlet 或某些 Spring 库,请写下他试图下载的确切 URL联系方式)。

  • 手动检查这些 URL 是否确实可以访问(通过浏览器)。如果是这样,请确保 Maven 正在寻找的版本存在依赖项。也许自项目创建以来它们已经更新,并且不再保留旧版本。在这种情况下,90% 的解决方案是简单地更新 Maven 的 pom 以指向新版本。

  • 如果手动检查依赖项的 URL 显示依赖项实际上存在,对于 Maven 正在寻找的版本,请确保没有代理或其他形式的互联网连接“额外配置”,这是为您的浏览器完成的,但不是为 Maven . 如果是这种情况,只需使用所有这些额外的参数(代理、代理身份验证等)更新 Maven 的配置。

  • 如果依赖项 URL 根本不存在,请尝试使用谷歌搜索以查看该依赖项现在是否不存在于其他一些存储库中。例如,许多 JBoss 依赖项(如 Hibernate 等)在 2007-2009 年左右更改了 repo 位置。如果是这种情况,只需将新的 repo 添加到 Maven 的 repo 列表中(如果旧的不再存在,则删除它)。

  • 最后,解决这个问题的好老可耻的方法是去找一位在某些时候与您的项目有(或曾经)有关的同事,并将他的本地 Maven 存储库复制到您的机器:)

于 2013-03-05T10:39:03.173 回答