我正在使用maven 3.1.1并正在开发一个大型Java项目,其中我们对Spring Framework的不同组件有很多依赖。每当我通过mvn clean install
构建时,构建都会永远存在。我查看了终端,基本上构建需要很长时间,因为maven正试图从一个无法建立连接的源下载元数据:
它基本上阻止了这里:
Downloading: http://source.mysema.com/maven2/releases/org/springframework/spring-beans/maven-metadata.xml
过了一段时间,在客户端甚至可以继续进行之前,我会拒绝连接。我没有来自source.mysema.com的这种直接依赖,所以我不确定为什么maven甚至会尝试从这里下载。
几个问题:
1)元数据如何正常运作?什么时候maven真的试图提取这些信息?是否存在每个依赖项的元数据,或者此存储库是否特定?
2)有没有办法强制客户端超时,如果在2秒之后无法建立连接,则不会提取此元数据?
3)我通过<repository>
标签查看了我们自己的内部存储库,该项目依赖于该存储库。在尝试调试此问题时,我直接查看了我们的Nexus存储库,发现metadata.xml文件包含此特定Spring依赖项的大量版本。为什么我的构建总是会下载此依赖项的所有版本?
我的怀疑是我的pom.xml中的repository
定义导致maven从source.mysema.com传递下载(通过我定义的一些远程存储库)。因此,我评论了所有repository
定义,希望maven不会与任何远程存储库通信,而是从我的本地m2中取出依赖关系,但不知怎的,它不断尝试从source.mysema.com下载。
思考?谢谢。
答案 0 :(得分:1)
回答你的问题
1)元数据如何正常运作?什么时候maven真的试图提取这些信息?是否存在每个依赖项的元数据,或者此存储库是否特定?
答案:maven-metadata已下载,因为您已将Release指定为其中一个版本标记,例如
<spring.version>3.2.4.RELEASE</spring.version>
现在,通过每日构建,您将看到元数据被下载为maven检查此版本的最新版本。您将在屏幕上看到类似的内容
下载:http://central.maven.org/maven2/org/springframework/spring-tx/maven-metadata.xml
如果pom.xml中的updatePolicy已设置为每日
,请再次检查它2)有没有办法强制客户端超时,如果在2秒之后无法建立连接,则不会提取此元数据?
答案:不确定这个。
3)我已经查看了我们自己的内部存储库,该项目依赖于该标记。在尝试调试此问题时,我直接查看了我们的Nexus存储库,发现metadata.xml文件包含此特定Spring依赖项的大量版本。为什么我的构建总是会下载此依赖项的所有版本?
答案:您必须在层次结构中移动nexus存储库。 Maven将首先查看nexus,只有在无法找到它时才能看到nexus。