Maven从哪里得到它用来下载poms的url

Where does Maven get the url it uses to download poms

对于 一些 项目,maven 似乎在构建正确的 URL.

时遇到问题

我遇到了失败:

Failed to execute goal on project Test: Could not resolve dependencies for project com.oldcurmudgeon:Test:jar:1.0: Failed to collect dependencies for [..., com.google.guava:guava:jar:15.0 (compile), commons-collections:commons-collections:jar:3.2.1 ...]: Failed to read artifact descriptor for org.slf4j:jul-to-slf4j:jar:1.7.14: Could not transfer artifact org.slf4j:jul-to-slf4j:pom:1.7.14 from/to uk.maven.org (http://uk.maven.org/maven2): Connect to uk.maven.org:80 [uk.maven.org/23.235.43.209] failed: Connection timed out: connect -> [Help 1]

我不明白 23.235.43.209 是从哪里来的?是在配置中还是什么?一些 pom.xmlsettings.xml?

可以浏览到http://uk.maven.org/maven2很好。

可以浏览到uk.maven.org:80 没问题。

不能浏览到uk.maven.org/23.235.43.209.

IP 地址显然是问题所在,但我该怎么做才能查明此 IP 的来源?

已添加

.m2 文件夹中的 settings.xml(如@KoustavRay 所述)显示为:

  ...
  <profiles>
    <profile>
      <id>Repositories</id>
      <repositories>
        <repository>
          <id>central</id>
          <name>Maven.org Repository for Maven</name>
          <url>http://repo1.maven.org/maven2/</url>
        </repository>
        <repository>
          <id>apache</id>
          <name>Maven.org Repository for Apache</name>
          <url>http://repo.maven.apache.org/maven2/</url>
        </repository>
        <repository>
          <id>java.net</id>
          <name>Java.net Repository for Maven</name>
          <url>http://download.java.net/maven/2/</url>
        </repository>
      </repositories>
    </profile>
   ...

所以没有提到奇怪的 ip 地址。事实证明,第三个有点不确定 - 从那以后它就被移动了。但是,删除该条目并不能解决问题。

还有 mirrors 部分:

<mirror>
  <mirrorOf>central</mirrorOf>
  <name>UK Mirror for maven.org</name>
  <url>http://uk.maven.org/maven2</url>
  <id>uk.maven.org</id>
</mirror>

已编辑:

问题的答案central 的定义在作为 Maven 安装一部分的 Maven 超级 POM 中。如果您希望将 Maven 安装指向不同的中央存储库,则可以镜像此存储库。

解决方法:可能是由于多个problems.However导致无法连接,有几个官方的Central repository分布在不同的地域。您可以更改 settings.xml(位于 ${user.home}/.m2/settings.xml)文件以使用一个或多个镜像。可以在使用 Mirrors for Repositories 指南中找到相关说明。 一个例子:

<settings>
  ...
  <mirrors>
    <mirror>
      <id>UK</id>
      <name>UK Central</name>
      <url>http://uk.maven.org/maven2</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
     <mirror>
        <id>planetmirror.com</id>
        <name>PlanetMirror Australia</name>
        <url>http://downloads.planetmirror.com/pub/maven2</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
  ...
</settings>

[uk.maven.org/23.235.43.209] 不是 URL,我认为它是帮助查找网络问题的详细输出。

23.235.43.209 uk.maven.org的IP:

C:\Users\hinneLinks>nslookup uk.maven.org
Server:  fritz
Address:  10.2.1.13

Nicht autorisierende Antwort:
Name:    sonatype.map.fastly.net
Address:  23.235.43.209
Aliases:  uk.maven.org
          central.maven.org

构建Maven项目时,会解析pom.xml文件,如果看到log4j的Maven坐标,则Maven按以下顺序搜索log4j库:

在 Maven 本地存储库中搜索 log4j。 在 Maven 中央存储库中搜索 log4j。 在 Maven 远程存储库中搜索 log4j(如果在 pom.xml 中定义)。 Maven 依赖库管理是一个非常好的工具,可以为您节省很多工作。 有几个官方中央存储库在地理上分布。您可以更改 settings.xml.Currently,mavenSW 中央存储库位于 http://repo1.maven.org/maven2。您可以在 org/apache/maven/project/pom-4.0.0.xml.[=12= 的 maven-2.0.8-uber.jar 的超级 pom.xml 文件中找到此 URL ]

有时,利用中央存储库的 public 镜像会很有用。例如,在中央存储库出现故障的罕见情况下,您可以指定使用存储库的镜像而不是中央存储库。此外,如果有一个镜像在地理位置上离您很近,那么使用 public 镜像可能会节省时间。 http://maven.apache.org/guides/mini/guide-mirror-settings.html.

中存在多个镜像的列表