maven - 多个存储库查找配置

时间:2015-04-25 15:01:26

标签: maven maven-2 maven-3

我正在为我的项目使用maven v3.0.1。我的项目依赖于企业远程存储库中的工件。此外,我在公司有一个本地archiva存储库,其中包含本地工件,这些工件不在公司远程存储库中。

我想以这样的方式创建settings.xml:对于所有项目,它将首先在公司远程存储库中查找指定的工件,如果没有在那里找到,请在本地archiva存储库中查找工件。

我在<repository>标记中添加了本地存储库,并为该<activeProfile>启用了配置文件。但是查找并没有像预期的那样发生。分析发现mirrorOf设置在那里起作用。以下是我的settings.xml。

<?xml version="1.0" encoding="UTF-8"?>
<settings>
  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://corporate-repo:8081/nexus/content/groups/public</url>
      </mirror>
  </mirrors>

  <profiles>
    <profile>
      <id>nexus</id>
      <repositories>

        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>
          </snapshots>
        </repository>

        <repository>
            <id>spring-snapshot</id>
            <name>Spring Maven SNAPSHOT Repository</name>
            <url>http://repo.springsource.org/libs-snapshot</url>
        </repository>

        <repository>
            <id>internal</id>
            <name>Local Release Repository</name>
            <url>http://local-repo:8081/repository/internal</url>
        </repository>

      </repositories>

      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>

  <activeProfiles>
    <activeProfile>nexus</activeProfile>
  </activeProfiles>  

</settings>

如何根据需要修改settings.xml以进行查找?是否可以在mirrorOf设置中提供两个网址。我试过了

<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://corporate-repo:8081/nexus/content/groups/public,http://local-repo:8081/repository/internal</url>
</mirror>

xml解析没有错误,但查找不起作用。任何人都可以阐明如何解决这个问题

1 个答案:

答案 0 :(得分:0)

我尝试了很多选项,最后通过将mirrorOf设置调整到<mirrorOf>*,!internal</mirrorOf>

来解决

所以镜像设置是,

 <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*,!internal</mirrorOf>
      <url>http://corporate-repo:8081/nexus/content/groups/public</url>
      </mirror>
  </mirrors>

*确保除了内部仓库!internal之外的所有请求都在公司仓库中进行查询。对于内部存储库,请在配置了存储库ID为internal

的local-repo中查找