Maven仓库

Maven仓库

一、什么是Maven仓库

    Maven可以在某个位置统一存储所有Maven项目共享的构件,这个统一的位置就是仓库。

二、仓库的布局 

    任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一的存储路径,这便是Maven的仓库布局方式
    考虑这个构件:groupId=org.testng、artifactId=testng、version=5.8、classifier=jdk5、packaging=jar,其对应的路径按如下步骤生成:
      1.基于构件的groupId准备路径,formatAsDirectory(0将groupId中的句点分隔符转换成路径分隔符,org.testng -----> org/testng/
      2.基于构件的artifactId准备路径,在前面的基础上加上artifactId分路径,org/testng/ ------> org/testng/testng/
      3.使用版本信息,在前面的基础上加上veision和路径分隔符,org/testng/testng/ -----> org/testng/testng/5.8/
      4.依次加上artifactId,构件分割连接符以及version,org/testng/testng/5.8/ -----> org/testng/testng/5.8/testng-5.8
      5.如果构件有classifier,就加上构件分隔符连字号和classifier, org/testng/testng/5.8/testng-5.8 ------> org/testng/testng/5.8/testng-5.8-jdk5
      6.检查构件的exclusion,若存在exclusion,则加上句点分割符和exclusion,packaging决定了构件的扩展名,最终路径为:org/testng/testng/5.8/testng-5.8-jdk5.jar

三、仓库的分类  

    仓库分为两类:本地仓库远程仓库。当Maven根据坐标寻找构件的时候,它首先会查看本地仓库,本地仓库有则直接使用,若本地仓库没有或需要查看是否有更新的版本,
    Maven就回去远程仓库查找,发现构件后,下载到本地仓库再使用。如果本地仓库和远程仓库都没有需要的构件,Maven就会报错
    本地仓库:不管是Windows还是Linux,每个用户在自己的用户目录下都有一个路径为.m2/repository/的仓库目录
    远程仓库:如果本地仓库相当于书房,那远成程库就相当于书店,书店可以有很多个。对于Maven来说,每个用户只有一个本地仓库,但可以配置很多远程仓库
    中央仓库:由于最原始的本地仓库是空的,Maven必须知道至少有一个可用的远程仓库,中央仓库就是一个这样的默认的远程仓库,Maven的安装文件自带了中央仓库的配置
    私服:私服是一种特殊的远程仓库,它是假设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用
    私服的好处:

          1.节省自己的外网带宽
          2.加速Maven构建
          3.部署第三方构建
          4.提高稳定性,增强控制
          5.降低中央仓库的负荷

四、仓库的配置

 1          <repositories>
 2             <repository>
 3                 <id>jboss</id>
 4                 <name>JBoss Repository</name>
 5                 <url>http://repository.jboss.com/maven2/</url>
 6                 <releases>
 7                     <enabled>true</enabled>
 8                 </releases>
 9                 <snapshots>
10                     <enabled>false</enabled>
11                     <updatePolicy>daily</updatePolicy>
12                     <checksumPolicy>ignore</checksumPolicy>
13                 </snapshots>
14                 <layout>default</layout>
15             </repository>
16         </repositories>           

    repositories元素下,可以使用repository元素声明一个或多个远程仓库,id为远程仓库的唯一标识,name为仓库名称,url为仓库地址
    releases为true,表示开启JBoss仓库的发布版本下载支持,snapshots为false,表示关闭JBoss仓库的快照版本的下载支持
    layout元素值为default表示仓库的布局是maven2及maven3的默认布局,updatePolicy用来配置远程仓库的更新频率,默认值是daily,表示
    每天检查一次,never,表示从不检查,always表示每次构建都检查,interval:X,表示每隔X分钟检查一次
    checksumPolicy用来配置Maven检查检验和文件的策略,下载构件的时候,Maven会验证校验和文件,如果验证失败,当checksumPolicy的
    值为warn时,Maven会输出警告信息,值为fail,遇到校验错误就让构建失败,ignore表示Maven完全忽略校验的错误

五、远程仓库的认证

    有时候出于安全考虑,我们需要提供认证信息才能访问一些仓库

    配置settings.xml

1        <servers>
2                 <server>
3                     <id>my-proj</id>
4                     <username>repo-user</username>
5                     <password>repo-pwd</password>
6                 </server>
7             </servers>

    这里的id需要跟pom中需要认证的repository元素的id完全一致

六、部署至远程仓库

    Maven除了能对项目进行编译、测试、打包之外,还能将项目生成的构建部署到仓库中,编辑pom.xml

 1      <distributionManagement>
 2             <repository>
 3                 <id>proj-releases</id>
 4                 <name>Proj Release Repository</name>
 5                 <url>http://192.168.1.100/content/repositories/proj-releases</url>
 6             </repository>
 7             <snapshotRepository>
 8                 <id>proj-snapshots</id>
 9                 <name>Proj Snapshot Repository</name>
10                 <url>http://192.168.1.100/content/repositories/proj-snapshots</url>
11             </snapshotRepository>
12         </destributionManagement>    

    distributionManagement包含repository和snapshotRepository子元素,前者表示发布版本仓库,后者表示快照版本仓库
    配置正确后,在命令行运行mvn clean deploy,Maven就会将项目构建输出的构件部署到配置的对应的远程仓库,如果项目当前的版本是快照版本,则
    部署到快照版本仓库地址,否则就部署到发布版本仓库地址

七、镜像

    如果仓库X可以提供仓库Y存储的所有的内容,那么就可以认为X是Y的一个镜像。可以使用镜像来代替中央仓库:编辑settings.xml:

1       <mirrors>
2             <mirror>
3                 <id>maven.net.cn</id>
4                 <name>one of the central mirrors in China</name>
5                 <url>http://maven.net.cn/content/groups/public</url>
6                 <mirrorOf>central</mirrorOf>
7             </mirror>
8         </mirrors>

    mirrorOf值为central代表中央仓库,对于任何中央仓库的请求都会转至该镜像

    为了满足一些复杂的需求,Maven还支持更高级的镜像配置:
    <mirrorOf>*</mirrorOf> 匹配所有远程仓库
    <mirrorOf>external:*</mirrorOf> 匹配所有不在本机上的远程仓库
    <mirrorOf>repo1,repo2</mirrorOf> 匹配repo1,repo2仓库
    <mirrorOf>*,!repo1</mirrorOf> 匹配所有远程仓库,repo1除外

八、仓库搜索服务    

    以下网站提供方便的途径寻找需要的依赖:
      Sonatype:http://repository.sonatype.org/
      Jarvana:http://www.jarvana.com/jarvana/
      MVNbrowser: http://www.mvnbrowser.com/
      MVNrepository:http://mvnrepository.com/

转载于:https://www.cnblogs.com/zzdd-blogs/p/6496851.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值