Maven - 存储库
什么是 Maven 存储库?
在 Maven 术语中,存储库是存储所有项目 jar、库 jar、插件或任何其他项目特定工件的目录,Maven 可以轻松使用它们。
Maven 存储库分为三种类型。 下图将给出关于这三种类型的存储库结构。
- local
- central
- remote
本地存储库
Maven 本地存储库是您机器上的一个文件夹位置。 它会在您第一次运行任何 maven 命令时创建。
Maven 本地存储库保存项目的所有依赖项(库 jar、插件 jar 等)。 当您运行 Maven 构建时,Maven 会自动将所有依赖项 jar 下载到本地存储库中。 它有助于避免在每次构建项目时引用存储在远程机器上的依赖项。
默认情况下,Maven 本地存储库由 Maven 在 %USER_HOME% 目录中创建。 要覆盖默认位置,请在 %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 会将依赖项下载到您的自定义路径。
中央存储库
Maven 中央仓库是 Maven 社区提供的仓库。 它包含大量常用的库。
当 Maven 在本地存储库中没有找到任何依赖项时,它开始使用以下 URL 在中央存储库中搜索 − https://repo1.maven.org/maven2/
中央存储库的关键概念如下 −
- 此存储库由 Maven 社区管理。
- 不需要配置。
- 它需要互联网访问才能进行搜索。
为了浏览中央 maven 存储库的内容,maven 社区提供了一个 URL − https://search.maven.org/#browse。使用这个库,开发人员可以搜索中央存储库中所有可用的库。
远程仓库
有时,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 依赖搜索序列
当我们执行 Maven 构建命令时,Maven 开始按以下顺序查找依赖库 −
步骤 1 − 在本地存储库中搜索依赖项,如果没有找到,则转到步骤 2,否则执行进一步处理。
步骤 2 − 在中央存储库中搜索依赖项,如果未找到并且提到远程存储库/存储库,则转到步骤 4。否则将其下载到本地存储库以供将来参考。
步骤 3 − 如果没有提到远程存储库,Maven 会简单地停止处理并抛出错误(无法找到依赖项)。
步骤 4 − 在远程存储库或存储库中搜索依赖项,如果找到,则将其下载到本地存储库以供将来参考。 否则,Maven 停止处理并抛出错误(无法找到依赖项)。