Maven 简明教程
Maven - Repositories
What is a Maven Repository?
在 Maven 术语中,存储库是一个存储所有项目 jar、库 jar、插件或任何其他项目特定构件的目录,Maven 可以在其中轻松使用它们。
Maven 存储库有三种类型。以下说明将介绍这三种类型的相关概念。
-
local
-
central
-
remote
Local Repository
Maven 本地存储库是计算机上的一个文件夹位置。首次运行任何 maven 命令时将创建它。
Maven 本地存储库保存项目的所有依赖项(库 jar、插件 jar 等)。运行 Maven 构建时,Maven 会自动将所有依赖项 jar 下载到本地存储库中。这有助于避免每次构建项目时引用存储在远程计算机上的依赖项。
默认情况下,Maven会在 %USER_HOME% 目录中创建 Maven 本地存储库。要覆盖默认位置,请在 %M2_HOME%\conf 目录中提供的 Maven settings.xml 文件中指定另一路径。
<settings xmlns = "http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>C:/MyLocalRepository</localRepository>
</settings>
运行 Maven 命令时,Maven 会将依赖项下载到自定义路径。
Central Repository
Maven 中央存储库是由 Maven 社区提供的存储库。它包含大量常用库。
当 Maven 在本地存储库中找不到任何依赖项时,它会使用以下 URL 在中央存储库中开始搜索: https://repo1.maven.org/maven2/
中央存储库的关键概念如下:
-
此存储库由 Maven 社区管理。
-
无需进行配置。
-
需要互联网访问才能进行搜索。
为了浏览中央 Maven 存储库的内容,Maven 社区提供了 URL − https://search.maven.org/#browse 。使用此库,开发人员可以搜索中央存储库中所有可用的库。
Remote Repository
有时,Maven 也找不到中央存储库中提到的依赖项。然后它会停止构建过程,并向控制台输出错误消息。为了防止这种情况,Maven 提供了 Remote Repository 的概念,它是开发人员自己的自定义存储库,其中包含所需的库或其他项目 jar。
例如,使用下面提到的 POM.xml,Maven 将从在同一 pom.xml 中提到的远程存储库中下载依赖项(在中央存储库中不可用)。
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.companyname.projectgroup</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>com.companyname.common-lib</groupId>
<artifactId>common-lib</artifactId>
<version>1.0.0</version>
</dependency>
<dependencies>
<repositories>
<repository>
<id>companyname.lib1</id>
<url>http://download.companyname.org/maven2/lib1</url>
</repository>
<repository>
<id>companyname.lib2</id>
<url>http://download.companyname.org/maven2/lib2</url>
</repository>
</repositories>
</project>
Maven Dependency Search Sequence
当我们执行 Maven 构建命令时,Maven 将按以下顺序开始查找依赖库 −
-
Step 1 − 如果未找到,则在本地存储库中搜索依赖项,然后转到步骤 2,否则执行进一步的处理。
-
Step 2 − 在中央存储库中搜索依赖项,如果未找到,且提到了远程存储库,则转到步骤 4。否则将其下载到本地存储库以供将来参考。
-
Step 3 − 如果没有提过远程存储库,Maven 会直接停止处理并抛出错误(无法找到依赖项)。
-
Step 4 − 在远程存储库中搜索依赖项,如果找到,则将其下载到本地存储库以供将来参考。否则,Maven 会停止处理并抛出错误(无法找到依赖项)。