在Maven中使用多个仓库的主要步骤是:
- 在settings.xml中定义多个元素:
<repositories>
<repository>
<id>repo1</id>
<url>http://.../repo1</url>
</repository>
<repository>
<id>repo2</id>
<url>http://.../repo2</url>
</repository>
</repositories>
- 在pom.xml中使用或元素继承settings.xml中定义的仓库:
<project>
...
<repositories>
<repository>
<id>repo1</id>
</repository>
</repositories>
...
</project>
或者:
<project>
...
<repository>
<id>repo2</id>
</repository>
...
</project>
- Maven在解析依赖时,会从定义的所有仓库查找,直到找到所需要的依赖。
- 也可以在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可以从不同来源解析和管理依赖。