maven仓库

1.本地仓库

一般来说,在maven项目目录下,没有诸如lib/这样用来存放依赖文件的目录。当maven在执行编译或测试时,如果需要使用依赖文件,它总是介于坐标使用bending仓库的依赖文件。

默认情况下,不管是Window还是在Linux上,每个用户在自己的用户目录下都有一个路径名为.m2/repository/的仓库目录。注意在linux系统,以点(.)开头的文件或目录默认是隐藏的,可以使用 ls -a 显示隐藏文件或目录。


  中央仓库


  配置如下:

   <repositories>
       <repository>
          <id>central</id>
           <name>Maven Repository Switchboard</name>
            <url>http://repo1.maven.org/maven2</url>
             <layout>default</layout>
             <snaphots>
                <enabled>false</enabled>
             </snaphots>
        </repsository>  
   </repositories>


包含这段配置的文件是所有Maven项目都会继承超级POM,这段配置使用id central 对中央仓库进行唯一标识,其名称为Maven Repository Switchboard,它使用default仓库布局,而snaphots元素,其子元素enaled为false,表示不从该中央仓库下载快照版本的构件。


私服是一种特殊的远程仓库,它是架设在局域网的仓库服务,私服代理广域网的远程仓库,提供域网内的Maven用户使用。

1.节省自己的外网宽带

 2.加速mavne构建

 3.部署第三方构件。

 4.提供稳定性,增强控制。

 5.降低中央仓库的负荷。


远程仓库的配置

   <repositories>
       <repository>
          <id>central</id>
           <name>JBoss Repository</name>
            <url>http://repository.jboss.com/maven2</url>
             <layout>default</layout>
             <snaphots>
                <enabled>false</enabled>
                 <updatePolicy>daily</updatePolicy>
                 <checksumPolicy>ignore</checksumPolicy>
             </snaphots>
              <releases>
                  true
              </releases>
        </repsository>  
   </repositories>


其中release的enabled值为true,表示开启Jboss仓库的发布版本支持,而snapshots的enabled值为false,表示关闭Jboss仓库的快照版本下载的支持。因此
,根据该配置,Maven只会从Jboss仓库下载发布版本的构件,而不会下载快照版本的构件。
 
元素updatePolicy用来配置Maven从远程仓库检查更新的频率,默认的值是daily,表示Maven每天检查一次,其他可用的值包括:never-从不检查更新;always-每次构建都检查更新;inteval:X-每隔X分钟检查一次更新(X为任意整数)

元素checksumPolicy用来配置Maven检查校验和文件的策略。当构件被部署到Maven仓库中时,会同时部署对应的校验和文件。在下载构件的时候,Maven会验证和文件,如果校验和验证失败,当checksumPolicy的值默认的warn时,Maven会执行构建时输出警告信息,其他的可用值包括:fail-Maven遇到校验和错误就让构建失败;ignore-使Maven完全忽略校验和错误。

远程仓库认证

认证配置一般在settings.xml文件中配置,setting.xml文件一般存放在本地。

<servers>
   <server>
    <id>my-proj</id>  ---远程仓库的id
     <username>repo-user</username>  ---认证的用户名
     <password>repo-pwd</password>   ---认证密码
   </server>
</servers>

部署至远程仓库

部署需要在项目中的pom.xml文件配置distributionManagement元素

<distributionManagement>
    <repository>
          <id>pro-releases</id>
           <name>Proj Release Repository</name>
            <url>http://192.168.1.100/content/repositories/pro-releases</url>
        </repsository>

       <snapshotRepository>
            <id>proj-snapshots</id>
             <name>Proj Snapshot Repository</name>
              <url>http://192.168.1.100/content/repositories/proj-snapshots</url>
       </snapshotRepository>
 </distributionManagement>

其中repository为发布的版本构件,snapshotRepository为发布的快照版本构件。

配置正确后,在命定行运行 mvn clean deploy , Maven就会将项目构建输出到构建部署到配置对应的远程仓库。

 


镜像
如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。

配置镜像需要编辑settings.xml文件,代码如下:

<mirrors>
    <mirror>
     <id>maven.net.cn</id>
      <name>one of the central mirrors in China</name>
       <url>http://mavne.net.cn/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>
     </mirror>
</mirrors>

该例中http://mavne.net.cn/content/groups/public/为中央仓库的镜像,<mirrorOf>的值为central,表示该配置为中央仓库的镜像,任何对于中央仓库的请求都会转至该镜像,用户也可以使用同样的方法配置其他仓库镜像。

关于镜像的一个更为常见的用法是结合私服。由于私服可以代理任何外部的公告仓库,因此,对于组织内容的Maven用户来说,使用一个私服地址就等于使用了所有需要的外部仓库,这可以将配置集中到私服,从而简化Maven本身的配置。这这种情况下,任何需要构件都可以从私服获得,私服就是所有仓库的镜像。

<mirrors>
    <mirror>
     <id>internal-repository</id>
      <name>Internal Repository Manager</name>
       <url>http://192.168.1.100/maven2</url>
        <mirrorOf>*</mirrorOf>
     </mirror>
</mirrors

该例中的<mirrorOf>的值为星号,表示该配置是所有Maven仓库的镜像,任何对于远程仓库的请求都会被转至这里。

<mirrorOf>external: * </mirrorOf> :  匹配所有远程仓库,使用localhost的除外。使用file://协议的除外。也就是说,匹配所有不在本机上的远程仓库。

<mirrorOf> repo1 repo2 </mirrorOf> : 匹配仓库repo和repo2,使用逗号分隔多个远程仓库。

<mirrorOf> *, ! repo1 </mirrorOf> :匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。

 

 

下面列举几个maven仓库搜索服务的网站。

 

Sonatype Nexus

 

地址: http://repository.sonatype.org/

Nexus是当前最流行的开发Maven仓库管理软件,Nexus提供了关键字搜索、类名搜索、坐标搜索、校验和搜索等工能。

 

Jarvana

 

地址:http://www.jarvana.com/jarvana

 

jarvana 提供了基于关键字,类名的搜索,构建下载、依赖声明片段等功能。

 

MVNbrowser

 

地址:http://www.mvnbrowser.com

 

MVNbrowser只提供关键字搜索的功能,除了提供基于坐标的依赖声明代码片段等基本工能之外,MVNbrowser的一大特色就是,能够告诉用户该构件的依赖与其他哪些构件,以及该构件被哪些其他构件依赖。

 

MVNrepository

 

地址:http://mvnrepository.com/

 

 

MVNrepository的界面比较清晰,它提供了基于关键字的搜索、依赖声明代码片段、构件下载、依赖与被依赖关系信息、构架所含信息等工能。MVNrepository还能提供一个简单的图表,显示某个构件各版本间大少的变化。

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值