Maven - 存储库(Repositories)

Maven - 存储库(Repositories) 首页 / Maven入门教程 / Maven - 存储库(Repositories)

用Maven术语来说,存储库是一个目录,所有项目jar,库jar,插件或任何其他项目特定的工件都存储在该目录中,并且Maven可以轻松使用它们。

Maven存储库有三种类型。下图说明了这三种类型。

  • local
  • central
  • remote
Repository Structure

本地存储库

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提供了“远程存储库”的概念,它是开发人员自己的自定义存储库,其中包含必需的库或其他项目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按照以下顺序开始寻找依赖库-

  • 步骤1   -  在 本地存储库 中的搜索依赖项(如果未找到),移至步骤2,否则执行进一步的处理。

  • 步骤2   -  中央存储库 中的搜索依赖项(如果未找到并且提到了远程存储库)则转到步骤4。

  • 步骤3   -  如果在远程存储库也未找到,则Maven只能停止处理并抛出错误(找不到依赖项)。

  • 步骤4   -  在远程存储库中搜索依赖项(如果找到),则将其下载到本地存储库中以备将来参考。否则Maven将停止处理并引发错误(无法找到依赖项)。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

邱岳的产品实战 -〔邱岳〕

数据结构与算法之美 -〔王争〕

Linux性能优化实战 -〔倪朋飞〕

玩转Spring全家桶 -〔丁雪丰〕

黄勇的OKR实战笔记 -〔黄勇〕

深入浅出云计算 -〔何恺铎〕

MySQL 必知必会 -〔朱晓峰〕

超级访谈:对话张雪峰 -〔张雪峰〕

徐昊 · TDD项目实战70讲 -〔徐昊〕

好记忆不如烂笔头。留下您的足迹吧 :)