Maven学习笔记(四):Maven仓库

Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库(仓库就是存放依赖和插件的地方)。

全部章节传送门:
Maven学习笔记(一):Maven概述
Maven学习笔记(二):Maven依赖
Maven学习笔记(三):POM文件
Maven学习笔记(四):Maven仓库
Maven学习笔记(五):Maven插件

任何的构件都有唯一的坐标,Maven根据这个坐标定义了构件在仓库中的唯一存储路径,

Maven仓库分为2类:

  • 本地仓库
  • 远程仓库,远程仓库又分成3种:
    • 中央仓库
    • 私服
    • 其它公共库

本地仓库

本地仓库是Maven在本地存储构建的地方。Maven的本地仓库,在安装maven后并不会创建,它是在第一次执行Maven命令的时候才被创建。

Maven本地仓库的默认位置:无论是Windows还是Linux,在用户的目录下都有一个.m2/repository/的仓库目录,这就是Maven仓库的默认位置。

在Maven的目录下的conf目录下,有一个settings.xml文件,是Maven的配置文件,在里面可以修改本地仓库的位置。

修改本地仓库位置:


localRepository>D:/myworkspace/maven_repository

还可以在里面配置优先使用的镜像,比如在国内直接连中央仓库速度较慢,一般使用阿里的镜像仓库。



    
    
        alimaven
        
        central
        aliyun maven
        http://maven.aliyun.com/nexus/content/groups/public/
       

大部分公共的远程仓库无须认证就可以直接访问,但我们在平时的开发中往往会架设自己的Maven远程仓库,出于安全方面的考虑,我们需要提供认证信息才能访问这样的远程仓库。配置认证信息和配置远程仓库不同,远程仓库可以直接在pom.xml中配置,但是认证信息必须配置在settings.xml文件中。这是因为pom往往是被提交到代码仓库中供所有成员访问的,而settings.xml一般只存在于本机。因此,在settings.xml中配置认证信息更为安全。


 
      
         
        server001 
        
        my_login 
        
        my_password 
        
        ${usr.home}/.ssh/id_dsa 
        
        some_passphrase
        
        664 
         
        775 
    
 

其他的配置大家可自行参考资料。

远程仓库

远程仓库主要用于获取其它人的Maven构件,其中最主要的就是中央仓库。关于如何在Maven中配置远程仓库,可以查看POM文件章节。

中央仓库

中央仓库是默认的的远程仓库,Maven在安装的时候,自带的就是中央仓库的配置。

所有的Maven都会继承超级POM,超级POM种包含如下配置:


    
        central
        Cntral Repository
        http://repo.maven.apache.org
        default
        
            false
        
    

中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。

私服

私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,在为Maven的下载请求提供服务。

Maven私服的优点:

  1. 加速构建;
  2. 节省带宽;
  3. 节省中央maven仓库的带宽;
  4. 稳定(应付一旦中央服务器出问题的情况);
  5. 控制和审计;
  6. 能够部署第三方构件;
  7. 可以建立本地内部仓库;
  8. 可以建立公共仓库。

当前主流的Maven私服:

  1. Apache的Archiva
  2. JFrogde的Artifactory
  3. Sonatype的Nexus

实战:使用Docker创建Nexus私服

启动Docker,输入命令:

docker run -d -p 8081:8081 --name nexus3 sonatype/nexus3

运行完毕,在浏览器访问 http://localhost:8081 进入Nexus页面。

如果访问不成功,可以在命令行输入 docker logs containerId 查看日志分析原因。

输入默认的用户名和密码admin/admin123即可登录。

进入界面后顶部由2个按钮,分别是仓库和设置。可以看到由4个默认的仓库。

Maven学习笔记(四):Maven仓库_第1张图片
nexus仓库.png

一般来说,Nexus 的仓库分为这么几类:

  • hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件(如 oracle 的 JDBC 驱动)以及自己或第三方的项目构件;
  • proxy 代理仓库:代理公共的远程仓库;
  • virtual 虚拟仓库:用于适配 Maven 1;
  • group 仓库组:Nexus 通过仓库组的概念统一管理多个仓库,这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库。

设置界面可以管理仓库,添加用户并分配权限。

Maven学习笔记(四):Maven仓库_第2张图片
nexus设置.png

你可能感兴趣的:(Maven学习笔记(四):Maven仓库)