用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提供了“远程存储库”的概念,它是开发人员自己的自定义存储库,其中包含必需的库或其他项目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将停止处理并引发错误(无法找到依赖项)。
参考链接
https://www.learnfk.com/maven/maven-repositories.html
标签:存储,依赖,companyname,jar,Repositories,无涯,Maven,库中 From: https://blog.51cto.com/u_14033984/9231173