Maven检查本地存储库,但从中央下载。为什么?

时间:2011-11-25 08:40:17

标签: maven artifactory maven-central

我们有一个用于缓存的本地神器存储库设置。它在我们的项目中配置,但是当我查看构建过程的stdout时,我看到这样的行

Downloading: http://ourserver/artifactory/our-repo/javax/transaction/jta/1.1/jta-1.1-sources.jar
Downloading: http://repo1.maven.org/maven2/javax/transaction/jta/1.1/jta-1.1-sources.jar
Downloaded: http://repo1.maven.org/maven2/javax/transaction/jta/1.1/jta-1.1-sources.jar (25 KB at 54.5 KB/sec)

所以看起来它试图从本地存储库和Maven Central下载jar,然后实际使用Maven Central。

如果我在浏览器中复制本地存储库的url,我会毫无问题地获取jar。

如果我查看了神器的管理应用程序,我可以看到人工制品。

有人可以解释为什么使用Maven Central吗?

更新:发生了什么以及我做了什么:

orien的回答解释了为什么Maven Central被访问了。

mliebelt评论暗示我对我的解决方案:看起来我们的本地存储库在必须首先下载工件时才会缓慢回答。我将缓存配置为在请求pom时急切下载jar和源。这应该减少从其他地方下载的工件数量。

1 个答案:

答案 0 :(得分:7)

Maven可以配置多个存储库。像在项目中一样添加存储库不会使您已配置的任何存储库失效。默认情况下,每个人都可以在Maven Central获取存储库。然后,Maven可以从任何可用的存储库中自由下载工件。

听起来你真正想要做的就是设置一个mirror。您可以在mirror文件中配置settings.xml

<mirrors>
    <mirror>
        <id>our-server-repo</id>
        <name>our local repository</name>
        <url>http://ourserver/artifactory/our-repo</url>
        <mirrorOf>*</mirrorOf>
    </mirror>
</mirrors>

请注意,我们在mirrorOf元素中使用了通配符(*)。这指定将通过指定的URL访问所有存储库。使用此配置,Maven将只访问您当地的Artifactory存储库。