Maven仓库

​ maven仓库分为本地仓库和远程仓库。远程仓库有中央仓库、私服、其他公共库。

本地仓库

​ 默认情况下,不管是在windows还是linux上,每个用户在自己的用户目录下都有一个路径名为.m2/repository/的仓库目录。用户也可自定义本地仓库目录地址,编辑文件./m2/settings.xml,设置localRepository元素的值为想要的仓库地址。但需要注意,默认情况下,./m2/settings.xml文件是不存在的,需要到安装目录复制./conf/settings.xml文件再进行编辑。

中央仓库

​ 原始的本地仓库是空的,maven必须知道至少一个可用的远程仓库,才能下载到需要的构件。中央仓库就是这样一个默认的远程仓库。maven的安装文件自带了中央仓库的配置。打开./lib/maven-model-builder-3.x..jar,访问路径org/apache/maven/model/pom-4.0.0.xml,可以看到如下的配置:


    
      central
      Central Repository
      https://repo.maven.apache.org/maven2
      default
      
        
        false
      
    
  

​ 此文件是所有maven项目都会继承的超级pom。

私服

​ 即使在一台直接连入internet的个人机器上使用maven,也应该在本地建立私服。因为私服可以帮助你:

  • 节省外网宽度
  • 加速maven构建。maven的一些内部机制(如快照更新检查)要求maven在执行构建的时候不停的检查远程仓库数据。
  • 部署第三方构件。
  • 提高稳定性,增强控制。但internet不稳定时,maven就无法顺利构建。

远程仓库的配置

​ 当默认的中央仓库无法满足需求时,可能需要的构件存在于另外一个远程仓库中,如JBoss Maven仓库。这时,可以在pom中配置该仓库。


    
      jboss
      JBoss Repository
      https://repository.jboss.com/maven2
      
      default
      
          
          true
      
      
        
        false
      
    
  

​ 对于releases和snapshots来说,处理enabled,还有两个子元素updatePolicy和checksumPolicy。


    false
    
    daily
    
    ignore


远程仓库的认证

​ 出于安全考虑,我们需要提供认证信息才能访问一些远程仓库,这时就需要配置认证信息。认证信息必须配置在settings.xml文件中,因为pom会被提交到代码仓库供所有成员访问,而settings.xml一般只放在本机。更为安全。


    
      
      my-repository
      username
      password
    

部署到远程仓库


    
    
        project-releases
        project releases repository
        http://192.168.40.240:8888/repository/maven-releases/
        default
    
    
    
        project-snapshots
        project snapshots repository
        http://192.168.40.240:8888/repository/maven-snapshots/
        legacy
    

​ 运行命令mvn deploy,maven就会项目构件输出到配置的远程仓库,如果项目当前的版本是快照版本,这部署到快照版本的仓库地址,否则就部署到发布版本的仓库地址。

快照版本

​ 将项目构件发布到私服时,maven会自动为构件打上时间戳。比如模块A的版本为2.1-SNAPSHOT,发布后2.1-20191212.221414-13就表示2019-12-12 22:14:14的第13次快照。当构建依赖于A的模板B时,maven会自动从仓库中检查A的2.1-SNAPSHOT的最新构件,发现有更新时便进行下载。用户可以使用命令行-U参数强制让maven检查更新,如mvn install-U。

镜像

​ 编辑settings.xml。


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

​ 关于镜像的另一个常见用法是结合私服。私服可以代理任何外部的公共仓库。可以将配置集中到私服,从而简化maven本身的配置。这种情况下,可以将mirrorof配置为*,

  • *:匹配所有的远程仓库
  • external:*:匹配所有不在本机上的远程仓库
  • repo1,repo2:匹配仓库repo1和repo2。
  • *,!repo1:匹配所有远程仓库,rpo1除外。

你可能感兴趣的:(Maven仓库)