Maven仓库
1.1、Maven中央仓库

Maven项目的所有依赖包都存放在Maven中央仓库中,然后在pom.xml配置文件中进行简单的配置即可,需要的时候自动下载,比手动下载方便多了, 尤其是对于WEB项目,动辄就几十个依赖包那是家常便饭,要是这些依赖包都是手动下载放到各自的项目中, 管理这么多的依赖包就很困难。Maven中央仓库解决了这个难题。

Maven中央仓库也称为Maven远程仓库

  • 公开的Maven中央仓库
    所有人都可以下载存储在其中的artifactMaven中央仓库
  • 私有的Maven中央仓库
    只有部分人通过某种认证方式认证通过之后才可以下载存储在其中的artifactMaven中央仓库。如果有某些artifact不希望被公开,那么就需要使用私有的Maven中央仓库
    中国大陆用户可以使用阿里云提供的私有的Maven中央仓库, 它号称无限容量、免费使用。
1.1.1、Maven中央仓库提供者
仓库提供者仓库名称是否公开仓库URL仓库搜索
Sonatype IncmevenCentral公开https://repo1.maven.org/maven2https://search.maven.org
Google LLCgoogle公开https://maven.google.com
JitPackjitpack公开https://jitpack.iohttps://jitpack.io
Gradle Incgradle-plugin公开https://plugins.gradle.orghttps://plugins.gradle.org
VMware Incspring-libs-release公开https://repo.spring.io/libs-releasehttps://repo.spring.io
VMware Incspring-plugins-release公开https://repo.spring.io/plugins-releasehttps://repo.spring.io
Grails Foundationgrails-core公开https://repo.grails.org/grails/corehttps://repo.grails.org/grails
Grails Foundationgrails-plugins公开https://repo.grails.org/grails/pluginshttps://repo.grails.org/grails

这些Maven中央仓库,除了google之外,在中国大陆没有CDN节点,但是中国大陆的很多企业都有他们的开源镜像

设置Maven中央仓库的镜像

https://mvnrepository.com并不是Maven中央仓库,他是收集各个Maven中央仓库的信息,方便开发者查询,还做统计工作。
1.1.2、Maven中央仓库的文件存储结构

Maven中央仓库的文件存储结构非常简单。

假设,我们有如下配置的artifact

<dependency>
    <groupId>com.fpliu</groupId>
    <artifactId>Android-List</artifactId>
    <version>1.0.1</version>
    <packaging>aar</packaging>
</dependency>

该配置下,在Maven中央仓库中的存储结构如下:

/
└── com
    └── fpliu
        └── Android-List
            ├── 1.0.0
            │   └── Android-List-1.0.0.aar
            ├── 1.0.1
            │   └── Android-List-1.0.1.aar
            └── maven-metadata.xml

这里有个maven-metadata.xml配置文件,我们看看它的内容:

<metadata>
    <groupId>com.fpliu</groupId>
    <artifactId>Android-List</artifactId>
    <versioning>
        <latest>1.0.1</latest>
        <release>1.0.1</release>
        <versions>
            <version>1.0.0</version>
            <version>1.0.1</version>
        </versions>
        <lastUpdated>20160422213339</lastUpdated>
    </versioning>
</metadata>

可以看得出,maven-metadata.xml配置文件是用来记录发布的版本号和最近一次更新的时间等信息的。

1.1.3、自己搭建Maven中央仓库
1.1.3.1、自己搭建Maven中央仓库的理由
  • 公有的Maven中央仓库通常是需要注册账号、部分仓库的首次审核时间非常的长,这影响我们的使用。
  • 一些Maven中央仓库是国外的,国内也没有他们的镜像,导致在国内使用的时候,下载速度非常慢。所以, 为了加快下载速度和安全的考虑, 一些公司在内网搭建自己的Maven中央仓库,这样下载速度非常快,而且安全。
1.1.3.2、服务器的选择

自己搭建Maven中央仓库的话,就需要有Web服务器,现成的、免费的 可以使用GitHubGitee等来做为服务器。如果你财大气粗的话,可以购买云服务器

1.1.3.3、在GitHub上搭建Maven中央仓库

按照上面的Maven中央仓库的文件存储结构,将文件推送到GitHub上就可以了。

示例

URLhttps://raw.githubusercontent.com/${github-username}/${github-repository}/master

1.2、Maven本地仓库

mvn命令会根据实际需要把Maven中央仓库中的文件下载到本地的~/.m2/repository目录中,它就是Maven本地仓库,我们看看: