这两个设置在maven中是否相同?

时间:2010-02-24 11:58:16

标签: java eclipse maven-2

我想限制maven只使用私有/非公共maven存储库,这两个设置是否具有相同的效果?

1.在settings.xml中设置镜像

<mirrors>
        <mirror>
            <id>my-internal-site</id>
            <mirrorOf>*</mirrorOf>
            <name>our maven repository</name>
            <url>http://myserver/repository</url>
        </mirror>
    </mirrors>

2.在pom.xml中设置存储库

<repositories>
    <repository>
      <id>my-internal-site</id>
      <name>our maven repository</name>
      <url>http://myserver/repo</url>
    </repository>
  </repositories>

同样要求是maven 永远不会转到公共存储库,即使内部存储库中没有某些依赖项。谢谢

2 个答案:

答案 0 :(得分:3)

不,他们没有相同的效果。

第二个设置添加一个新的存储库作为中心的“补充”,但不会阻止Maven自行检查中心。

第一个通过让Maven镜像所有存储库请求(通过将mirrorOf设置为*)来强制Maven使用单个存储库。这是使用a single repository的方法。

您正在寻找的是第一个设置,需要在settings.xml中定义。

现在,在每台计算机的~/.m2/settings.xml文件中添加您的公司存储库可能会有点痛苦,我喜欢在公司环境中做的是分发和安装包含镜像的Maven的“自定义”版本在conf/settings.xml中预定义。这样,人们只需要安装“公司”版本,他们就可以开始了。

答案 1 :(得分:0)

不,他们的意思不同:

在第一个示例中,您说给定的存储库是所有存储库的镜像,包括官方存储库

在第二个示例中,您只需添加一个新的存储库。如果在本地存储库中找不到依赖项,Maven将在在官方存储库中搜索后查看此存储库

因此,要强制使用内部存储库,您必须在mirror文件中配置settings.xml

the official documentation of Maven中解释了这一点。