Maven3仓库与配置

jopen 9年前

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>

来自:http://my.oschina.net/u/1413049/blog/519543