mavne仓库
maven的仓库分为两类:本地仓库和远程仓库,当maven在按照坐标查找构建或插件时,会先在本地仓库查找,能找到就会直接使用本地仓库的构建或插件;当没找到对应的构建或插件或者需要查看更新时,才会去远程仓库查找,找到后会下载到本地,没找到会报错。
maven的本地仓库
maven的本地仓库位置默认在用户目录下的.m2/repository,可以通过配置settings.xml中的
<settings> ... <localRepository></localRepository> ... </settings>
配置本地仓库到其他位置,需要注意的是,要使settings.xml中的配置生效,在IDE中必须指定settings.xml位置;若在命令行中使用,默认会使用maven_home目录下config中的settings.xml,可以使用-s指定要使用的settings.xml文件的位置。
maven的远程仓库
maven的远程仓库又分为公开的仓库(如默认的中央仓库、java.net Maven库、JBoss Maven库等)和私服(一般为公司局域网中使用,节约流量,便于管理,加速构建,常见的可以使用nexus这个开源项目来快速搭建)
maven的远程仓库配置
maven的远程仓库配置可以在pom.xml中或settings.xml中完成,pom.xml文件用来设置当前项目的配置项,如果有配置其他模块或其他项目会复用,可以在settings.xml中配置或者使用继承来实现配置的复用;settings.xml适合用来配置一些所有maven项目都会公用的配置信息,比如:maven构建以及插件的下载地址、maven的镜像、maven代理等
<repositories> <repository> <id>maven.oschia.net</id> <name>oschina maven repository</name> <url>http://maven.oschina.net/content/groups/public/</url> <releases> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </snapshots> <layout>default</layout> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>maven.oschina.net</id> <name>oschina maven repository</name> <url>http://maven.oschina.net/content/groups/public/</url> <releases> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> <layout>default</layout> </pluginRepository> </pluginRepositories>
repositories元素下可以配置多个repository,每个repository表示一个远程仓库,repository下面的元素如下
- id,每个repository需要一个唯一的id,如果id相同后面的配置会覆盖前面的配置,如maven的超级pom.xml(解压${M2_HOME}/lib/maven-model-builder-3.0.4.jar,在解压出来的目录的/org/apache/maven/model/pom-4.0.0.xml)中配置了maven的中央仓库,id为central,我们可以通过配置相同id覆盖中央仓库配置;
- name,用于描述这个仓库
- releases,enabled:true或false;updatePolicy:更新频率never-从不,always-每次构建都检查,daily-每天(默认),inerval:x-每隔x分钟;checksumPolicy:用来配置文件校验和策略,当勾践被部署到远程仓库会同时生成一个校验和文件,在下载构件时检查校验和,warn-校验失败输出警告(默认),fail-校验失败构建失败,ignore-忽略
- snapshots 同上
- layout,布局默认为default
pluginRepositories情况与上面基本一致。
部署仓库配置
私服可以用于部署第三方构件,需要在pom.xml文件中如下配置:
<distributionManagement> <repository> <id>project-release</id> <name>release repository</name> <url></url> </repository> <snapshotRepository> <id>project-snapshot</id> <name>snapshot repository</name> <url></url> </snapshotRepository> </distributionManagement>
repository用来配置release版本的部署仓库,snapshotRepository用于配置snapshot版本的部署配置
仓库认证
在从仓库下载构建或者部署构件到仓库时,可以开启账号密码认证,只有拥有正确的账号密码的才可以使用,这是需要在settings.xml文件中配置认证信息,如下:
<settings> ...... <servers> <server> <id>mapping repository id</id> <username></username> <password></password> </server> </servers> ...... </settings>