maven学习笔记(三)仓库

1本地仓库

只有再本地仓库的构件才能被maven项目使用。

2远程仓库

(1)中央仓库是默认的远程仓库

maven安装文件自带中央仓库的配置。用解压工具打开$M2_HOME/lib/maven-model-builder-3.0.jar,访问路径org/apache/maven/model/pom-4.0.0.xml可以看到:

  <repositories>
  	<repository>
  		<id>central</id>
  		<name>Maven Repository Switchboard</name>
  		<url>http://repo1.maven.org/maven2</url>
  		<layout>default</layout><!-- 仓库布局 -->
  		<snapshots>
  			<enabled>false</enabled><!-- 不下载snapshot版本的构件 -->
  		</snapshots>
  	</repository>
  </repositories>

这个pom是所有maven项目都会继承的超级pom 

(2)其他公共库

常见的有:Java.net Maven库 http://download.java.net/maven/2/

JBoss Maven库 http://repository.jboss.com/maven2/

有时默认中央仓库无法满足项目需求,需要配置另外一个远程仓库,在项目pom中增加

  <repositories>
  	<repository>
  		<id>jboss</id>
  		<name>Jboss Repository</name>
  		<url>http://repository.jboss.com/maven2</url><!-- 仓库地址 -->
  		<releases><!-- 发布版本 -->
  			<enabled>true</enabled>
  			<updatePolicy>daily</updatePolicy><!-- 从远程仓库检查更新的频率 -->
  			<checksumPolicy>ignore</checksumPolicy><!-- 检查检验和文件的策略,在下载构件时会验证校验和文件,warn(默认)——执行构件时输出警告信息,fail——遇到校验和错误
  			就让构件失败,ignore——完全忽略校验和错误 -->
  		</releases>
  		<snapshots><!-- 快照版本 -->
  			<enabled>false</enabled><!-- 不下载snapshot版本的构件 -->
  		</snapshots>
  		<layout>default</layout><!-- 仓库布局 -->
  	</repository>
  </repositories>

 注意:仓库声明的id必须唯一,maven自带的中央仓库id为central如果其他仓库也声明该id,就会覆盖中央仓库的配置。

3私服

特殊的远程仓库,为节省带宽和时间,局域网架设的私有仓库服务器,用其代理所有外部的远程仓库。还能部署内部项目(mvn clean install)供其他项目使用。

4配置远程仓库的认证

使访问远程仓库(下载构件,部署构件等)需要提供认证信息。

认证信息必须配置在setting.xml中,为一个id为my-proj的仓库配置认证信息,setting.xml有如下配置:

  <servers>
  	<server>
  		<id>my-proj</id><!-- 必须与要认证的repository id一致 -->
  		<username>repo-user</username>
  		<password>repo-pwd</password>
  	</server>
  </servers>

 5部署至远程仓库

项目的pom.xml

  <distributionManagement>
  	<repository><!-- 发布版本构件仓库 -->
  		<id>proj-releases</id>
  		<name>Proj Release Repository</name>
  		<url>..</url>
  	</repository>
  	<snapshotRepository><!-- 快照版本构件仓库 -->
  	  	<id>proj-snapshots</id>
  		<name>Proj Snapshot Repository</name>
  		<url>..</url>
  	</snapshotRepository>
  </distributionManagement>

 配置正确后,运行命令 mvn clean deploy,maven将项目构件部署到远程仓库,快照版本部署到快照版本远程仓库,发布版本部署到发布版本远程仓库。

6从仓库解析依赖的机制

依赖的版本不是显示的发布版本构件,如:1.2,2.1-beta-1等,而是RELEASE或LATEST,SNAPSHOT,会从远程仓库读取元数据groupId/artifactId/maven-metadata.xml,再将元数据与本地元数据合并,计算出真实版本值,然后基于这个真实值检查和解析本地和远程仓库。

注意:仓库元数据不是永远正确的,有时发现无法解析某些构件或解析得到错误构件,有可能是元数据出错,需要手工或使用工具(如Nexus)对其进行修复。

7镜像

如果仓库X可以提供仓库Y存储的所有内容,X就是Y的一个镜像。如:http://maven.net.cn/content/groups/public/是中央仓库再中国的镜像,由于地理位置的因素,该镜像往往能够比中央仓库提供更快的服务。

配置镜像,在setting.xml文件中

  <mirrors>
  	<mirror>
  		<id>maven.net.cn</id>
  		<name>中央仓库镜像</name>
  		<url>http://maven.net.cn/content/groups/public/</url>
  		<mirrorOf>central</mirrorOf><!-- 表示中央仓库的镜像,任何对中央仓库的请求都会转至该镜像 -->
  	</mirror>
  </mirrors>

 私服代理外部仓库时,配置私服

  <mirrors>
  	<mirror>
  		<id>internal-repository</id>
  		<name>Internal Repository Manager</name>
  		<url>..</url>
  		<mirrorOf>*</mirrorOf>
  	</mirror>
  </mirrors>

 注:mirrorOf

          <mirrorOf>external:*</mirrorOf> <!-- 匹配所有不在本机上的远程仓库,使用localhost和file://协议的除外, -->
          <mirrorOf>repo1,repo2</mirrorOf><!-- 匹配仓库repo1,repo2,使用逗号分隔多个远程仓库 -->
          <mirrorOf>*,! repo1</mirrorOf><!-- 匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配排除 -->

8获取maven坐标

https://repository.sonatype.org/#welcome

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值