5

我有两台电脑。一个总是从http://repo1.maven.org下载。而另一个从http://repo.maven.apache.org下载。

今天,我在第一台计算机上遇到了这样的校验和错误。

[WARNING] Checksum validation failed, expected  but is 63801e851fe885601a0bd0eceb6501f7db37e47e for http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/1.0-alpha-6/plexus-archiver-1.0-alpha-6.pom

在使用http://repo.maven.apache.org的第二台计算机上工作正常,没有校验和错误。

我一直在尝试将http://repo1.maven.org更改为http://repo.maven.apache.org但我找不到在哪里进行更改。

我还想知道为什么来自同一网络的不同计算机会下载不同的存储库并永远坚持使用该存储库。

4

2 回答 2

6

Apache Maven 3.0.4 对此进行了更改,相关问题是MNG-5151

于 2013-08-27T20:21:47.270 回答
4

设置文件的默认位置是:

settings.xml 文件可能存在两个位置:

  • Maven 安装:$M2_HOME/conf/settings.xml
  • 一个用户的安装:${user.home}/.m2/settings.xml

M2_HOME是maven安装目录的路径。默认值可以在maven 安装说明中找到:

  • 赢XP/2K:C:\Program Files\Apache Software Foundation\apache-maven-3.1.0
  • 基于Unix:/usr/local/apache-maven/apache-maven-3.1.0

或打开命令提示符/终端并输入:

  • 赢XP/2K:echo %M2_HOME%
  • 基于Unix:echo $M2_HOME

要更改中央存储库的位置,可以定义其镜像。打开你的settings.xml并添加:

<settings>
 ...
<mirrors>
  <mirror>
     <id>myMirrorId</id>
     <name>mirror of a central repo</name>
     <url>http://server</url>
     <mirrorOf>central</mirrorOf>
  </mirror>
</mirrors>
 ...
</settings>

现在,当使用调试输出 () 从项目根文件夹运行 maven 时,-X您应该在控制台输出的开头看到:

[DEBUG] Using mirror myMirrorId (http://server) for central (http://repo.maven.apache.org/maven2).

默认的中央仓库有id中央,这就是为什么这是 mirrorOf标签的价值。我的默认中央存储库是您要设置的那个。

我也想知道为什么来自同一网络的不同计算机要下载不同的存储库。

如果您评论用户设置文件中的所有内容(只留下外部settings标签)并运行默认全局设置文件(基本上是空的):

mvn help:effective-settings

将转储几乎空的设置。在构建项目时,maven 仍然知道中央 repo 的位置,因为每个 pom 文件都继承自超级 pom,并且这是定义默认中央 repo URL 的位置:

<repositories>
    <repository>
        <id>central</id>
        <name>Central Repository</name>
        <url>http://repo.maven.apache.org/maven2</url>
        <layout>default</layout>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

超级 pom 位于$M2_HOME/lib/maven-model-builder-<VERSION>.jar/org/apache/maven/model/pom-4.0.0.xml

正如 Robert Scholte 所告知的,从 3.0.4 开始,默认 URL 已从 更改http://repo1.maven.org/maven2http://repo.maven.apache.org/maven2

于 2013-08-27T17:37:58.997 回答