2013-03-05 22 views
0

第一天在一个项目和Maven的第一天,我已经浪费了很多时间来试图构建它。试图快速复活一个旧的Maven构建项目

看来问题是,这个旧项目有配置,POMs等,其中嵌入了许多破损的URL。即Maven生成的堆栈跟踪呈现大量URL,当尝试下载项目依赖性时会被破坏。

我只给出了包含Maven配置文件的项目源代码。我还没有提供现有的Maven仓库,项目相关的库或任何构建环境等。 我一直在黑客攻击这些文件,但每次构建都没有太多的尝试。

我在做一些根本性错误的事情还是这个Maven配置在2008年真的陷入困境?

更新:

我真的POM被卡在2008年,即凭借版本,它是一个即时快照,而Java世界的其余部分继续前进。

某些依赖关系不在任何存储库中,其中大部分都是已停用的项目,因此我不再使用它们。我不得不重写整个POM。我不得不花费很多时间来调整版本,以确保依赖关系和插件之间的兼容性。经过多次战斗;一些插件不会共存,互相破坏。总而言之,这是多少个多小时的努力......对于这个项目来说太多了,只有一个开发人员,而且我相信我现在才知道足够危险。 在这种情况下,好的IDE构建系统将是更好的选择。

+1

是否将您的settings.xml或POM指向不存在的远程存储库? – ftr 2013-03-05 07:52:53

+0

首先要花时间学习Maven。 *“我在做一些根本性错误”*。是的...见前。 – 2013-03-05 10:42:44

+0

另请参见:您是否支持代理? – carlspring 2013-03-05 12:27:24

回答

3

ftr的建议(in the comments section)是正确的:Maven无法下载某些依赖关系,但这并不意味着这些依赖关系不再存在。这可能是因为Maven配置的extra-repos部分现在缺少某些存储库,并且/或者存在其他一些连接问题(如错误的代理配置 - 这可能会导致您可以访问某些回购站,但不能访问其他回收站)。

我一直处于类似的情况,并发现,尽管最初Maven在尝试下载大约80%的依赖关系时报告了错误,在对Maven的配置进行了各种调整之后,我最终使其下载了所有的依赖关系除了其中一个实际上只是一个有人做的定制jar而且是从本地文件系统直接获取的,但除此之外)。

这里就是我想要做的:

  • 所有Maven的说,它不能下载,试图发现2或3分别是“众所周知”的依赖关系(譬如,如果它说,它无法下载Servlet或某个Spring库,请记下他正在尝试联系的那些URL)。

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

  • 如果手动检查依赖项的URL,显示实际上依赖项存在,对于Maven正在查找的版本,请确保没有代理服务器或某种其他形式的Internet连接“额外配置” ,但不适用于Maven。如果是这样的话,只需使用所有这些额外参数(代理,代理身份验证等)更新Maven的配置。

  • 如果依赖关系URL根本不存在,请尝试使用Google搜索来查看该依赖关系是否现在不存在于其他某个回购站点上。例如,许多JBoss依赖项(如Hibernate等)在2007-2009左右的某个地方改变了回购的位置。如果是这种情况,只需将新的回购添加到Maven的回购清单(如果不再存在旧回购清单,则删除旧回购清单)。

  • 最后,为了解决这个问题的好老可耻的办法是去哪个有一个同事(或必须)是与您的项目在某些时候,他的本地Maven回购复制到你的机器:)