如何在Maven中使用多个仓库?代码举例讲解

在Maven中使用多个仓库的主要步骤是:

  1. 在settings.xml中定义多个元素:
<repositories>
    <repository>
        <id>repo1</id>
        <url>http://.../repo1</url>
    </repository>
    <repository>
        <id>repo2</id>
        <url>http://.../repo2</url>
    </repository>
</repositories>
  1. 在pom.xml中使用或元素继承settings.xml中定义的仓库:
<project>
    ...
    <repositories> 
        <repository>
            <id>repo1</id>
        </repository>
    </repositories>
    ...  
</project>

或者:

<project>
    ... 
    <repository>
        <id>repo2</id>  
    </repository>
    ...
</project> 
  1. Maven在解析依赖时,会从定义的所有仓库查找,直到找到所需要的依赖。
  2. 也可以在pom.xml中显式定义某个依赖使用的仓库:
<dependency>
    <groupId>...</groupId>
    <artifactId>...</artifactId>
    <version>...</version>
    <scope>...</scope> 
    <repositoryId>repo1</repositoryId>
</dependency>

这样Maven在解析该依赖时,会只在repo1仓库中查找。

仓库主要用于管理构件(依赖),我们可以从远程仓库下载构件,也可以部署构件到远程仓库。

来看一个简单示例:
settings.xml:

<repositories>
    <repository>
        <id>repo1</id>
        <url>http://.../repo1</url>
    </repository>  
    <repository>
        <id>repo2</id>
        <url>http://.../repo2</url>
    </repository>
</repositories>

pom.xml:

<project>
    ...
    <repositories>
        <repository>
            <id>repo1</id>
        </repository>
    </repositories> 
    ...
    <dependency>
        <groupId>...</groupId>
        <artifactId>...</artifactId>
        <version>...</version>  
        <repositoryId>repo2</repositoryId> 
    </dependency>
    ...
</project>

所以,通过定义多个仓库和指定依赖使用某仓库,Maven可以从不同来源解析和管理依赖。