Maven学习(二) - 仓库与私服

本地仓库和远程仓库

maven仓库分为本地仓库和远程仓库,当maven根据坐标寻找构件时,首先会从本地仓库中查找,若是本地仓库中没有,则会去远程仓库中查找,而后下载到本地仓库中再使用。本地仓库的仓库目录默认为用户目录/.m2/repository,能够修改**.m2/setting.xml**文件(默认不存在,须要从maven安装目录下copy一份)的localRepository元素。安全

<settings>
    <localRepository>D:\maven\repository\</localRepository>
</settings>

不少状况下,默认的中央仓库没法知足项目的需求,可能须要的构件存在于另外一个远程仓库,如JBoss Maven仓库,能够在POM中配置该仓库。服务器

<repositories>
  	<repository>
  		<id>jboss</id>
  		<name>JBoss Repository</name>
  		<url>http://repository.jboss.org/maven2</url>
  		<releases>
  			<enabled>true</enabled>
  		</releases>
  		<snapshots>
  			<enabled>false</enabled>
  		</snapshots>
  	</repository>
  </repositories>

releases和snapshots中的enabled表示开启JBoss仓库的的发布版本下载,关闭快照版本的下载。maven

若是一个内部的maven服务器须要认证,能够在settings.xml中配置用户名和密码url

<servers>
    <server>
      <id>deploymentRepo</id>
      <username>repouser</username>
      <password>repopwd</password>
    </server>
</servers>

repository信息能够直接在pom.xml中配置,但认证信息必须在settings.xml中配置。这样更为安全。代理

私服

私服是一种特殊的远程仓库,为了节省带宽和时间,能够在局域网内架设一个私有的仓库服务器,用其代理全部外部的远程仓库,而内部项目也能够部署到私服上供其余项目使用。code

建立私服有许多好处server

  • 节省外网带宽
  • 加速maven构建
  • 部署第三方构件
  • 提升稳定性,加强控制
  • 下降中央仓库的负荷

公司的内部项目不能公开发布,但须要被其余项目依赖,能够部署到私服上。 在pom.xml中配置发布地址。xml

<distributionManagement>
	<repository>
		<id>thirdparty</id>
		<name>project thirdparty repository</name>
		<url>
			http://mvn.company.com/nexus/content/repositories/thirdparty
		</url>
	</repository>
</distributionManagement>

当执行mvn发布命令时,maven会将项目构建输出到配置对应的远程仓库开发

mvn clean deploy

镜像

若是仓库X能够提供仓库Y存储的全部内容,那么就能够认为X是Y的一个镜像。因为地理位置的因素,镜像每每可以提供比中央库存更快的服务。所以能够在settings.xml中配置镜像代替中央仓库。部署

<!-- 配置阿里的镜像 -->
<mirrors>
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror> 
</mirrors>

<mirrorOf>配置*,表明对全部仓库的请求都转发至此镜像,若是配置central,则表示对中央仓库的请求都会转至该镜像。<mirrorOf>支持多种配置:

  • <mirrorOf>*</mirrorOf>:匹配全部远程仓库
  • <mirrorOf>external:*</mirrorOf>:匹配全部不在本机上的远程仓库
  • <mirrorOf>repo1,repo2</mirrorOf>:匹配仓库repo1和repo2,使用逗号分隔多个远程仓库
  • <mirrorOf>*,!repo1</mirrorOf>:匹配全部远程仓库,repo1除外

也能够将私服配置为镜像。因为私服能够代理任何外部的公共仓库,所以对于内部的maven用户来讲,使用一个私服地址等于使用了全部须要的外部仓库。

<mirror>
  <id>internal repository</id>  
  <name>Internal Repository</name>
  <url>http://192.168.1.100/nexus/content/groups/public</url>
  <mirrorOf>*</mirrorOf>
</mirror>

仓库搜索

在使用maven进行平常开发的时候,一个常见的问题就是如何寻找须要的依赖的坐标地址。我经常使用的就是http://mvnrepository.com/,根据关键字进行查询,绝大部分的maven项目都能查询到。

相关文章
相关标签/搜索