试图快速复活旧的Maven构建项目

时间:2013-03-05 06:35:15

标签: project build maven

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

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

我只获得了包含Maven配置文件的项目源代码。我没有提供现有的Maven存储库,项目依赖库或任何构建环境等。 我一直在攻击这些文件,但是每次构建尝试都没有达到目标。

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

更新

我的POM确实在2008年陷入困境,即凭借版本控制,它是Java时代其他部分继续前进的快照。

某些依赖项不再存在于任何存储库中,其中大多数都是已停止使用的项目,因此我已不再使用它们。我不得不重写整个POM。我不得不花费大量时间调整版本以确保依赖关系和插件之间的兼容性。经过多次战斗;有些插件不会共存,互相破坏。

总而言之,这个项目需要花费很多很多时间......对于只有一个开发人员的项目来说太多了,而且我相信我现在才知道它是危险的。 在这种情况下,优秀的IDE构建系统将是更好的选择。

1 个答案:

答案 0 :(得分:3)

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

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

这就是我要做的事情:

  • 在Maven说它无法下载的所有依赖项中,尝试找出“知道”的2或3(如果说它无法下载Servlet或某些Spring库,请记下他正试图联系的确切网址。)

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

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

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

  • 最后,解决这个问题的一个好老可耻的方法是找一个同时与你的项目有关的同事,并将他当地的Maven回购复制到你的机器上:)< / p>