- Maven 教程
- Maven - 首页
- Maven - 概述
- Maven - 环境设置
- Maven - POM
- Maven - 构建生命周期
- Maven - 构建配置文件
- Maven - 仓库
- Maven - 插件
- Maven - 创建项目
- Maven - 构建和测试项目
- Maven - 外部依赖
- Maven - 项目文档
- Maven - 项目模板
- Maven - 快照
- Maven - 构建自动化
- Maven - 管理依赖
- Maven - 部署自动化
- Maven - Web 应用程序
- Maven - Eclipse IDE
- Maven - NetBeans
- Maven - IntelliJ IDEA
- Maven 有用资源
- Maven - 常见问题解答
- Maven - 快速指南
- Maven - 有用资源
- Maven - 讨论
Maven - 仓库
什么是 Maven 仓库?
在 Maven 术语中,仓库是指一个目录,其中存储了所有项目 jar、库 jar、插件或任何其他项目特定构件,Maven 可以轻松地使用这些构件。
Maven 仓库有三种类型。下图将说明这三种类型。
- 本地仓库
- 中央仓库
- 远程仓库
本地仓库
Maven 本地仓库是您机器上的一个文件夹位置。当您第一次运行任何 Maven 命令时,它就会被创建。
Maven 本地仓库保存您项目的所有依赖项(库 jar、插件 jar 等)。当您运行 Maven 构建时,Maven 会自动将所有依赖项 jar 下载到本地仓库。这有助于避免每次构建项目时都引用存储在远程机器上的依赖项。
Maven 本地仓库默认由 Maven 在 %USER_HOME% 目录中创建。要覆盖默认位置,请在 Maven settings.xml 文件(位于 %M2_HOME%\conf 目录中)中指定另一个路径。
<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 提供了远程仓库的概念,它是开发人员自己的自定义仓库,包含所需的库或其他项目 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 停止处理并抛出错误(无法找到依赖项)。