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
公司的内部项目不能公开发布,但须要被其余项目依赖,能够部署到私服上。 在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>支持多种配置:
也能够将私服配置为镜像。因为私服能够代理任何外部的公共仓库,所以对于内部的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项目都能查询到。