Maven实战读书笔记(二):Maven坐标与仓库

2.1 Maven坐标

Maven坐标是Maven用来表示一个组件依赖的标示。
Maven经过下面几个元素定义坐标:groupId、artifactId、version、packaging、classifier.java

groupId:定义当前Maven项目隶属的实际项目。不该该是组织或公司(一个公司有不少项目,每一个项目有不少模块)。apache

artifactId:定义实际项目的一个Maven模块,推荐使用实际项目名称做为前缀。服务器

version:定义Maven项目当前所处的版本。网络

packaging:定义Maven项目的打包方式,可选的有:jar(默认)、warpom,不一样的打包方式会影响构建的生命周期。maven

classifier:定义构建输出的一些附属构建,如javadocsources布局

2.2 Maven仓库

Maven坐标是一个构件的逻辑表示,构件的物理表示是文件,Maven经过仓库来统一管理这些文件。ui

得益于坐标机制,Maven项目可以以统一的方式来使用任何构件,在此基础上,Maven能够在某个位置统一存储全部Maven项目共享的构建,这个统一位置就是仓库。阿里云

2.2.1 仓库的分类

Maven中的仓库分为:本地仓库和远程仓库。url

Maven根据坐标寻找构件时,先查看本地仓库是否存在该构件,存在则直接使用;不然就查找远程仓库,找到以后就下载到本地仓库;本地和远程都没找到,直接报错。代理

仓库的分类

中央仓库是Maven核心自带的远程仓库,含绝大多数开源的构件;

私服是在局域网搭建的仓库服务器,用于代理外部的远程仓库,能够节省带宽和时间,内部的项目还能部署到私服供其余项目使用;使用私服能够加速Maven构建以及提升稳定性,内网访问不须要依赖于网络。

其余公共服,如阿里云等。

本地仓库:配置路径${M2_HOME}/conf/settings.xml,默认是${user.home}/.m2/repository.

构件进入本地仓库有两种方式:Maven从远程仓库下载到本地仓库;经过在项目执行mvn install安装到本地。

Maven而言,用户的本地仓库只有一个,但能够配置访问不少远程仓库。而中央仓库是默认的远程仓库,在$M2_HOME/lib/maven-model-builder-{version}.jarorg/apache/maven/model/pom-4.0.0.xml文件定义了,该POM也被称为超级POM

2.2.2 仓库的布局

构件在Maven仓库里的存储路径为:{groupId}/{artifactId}/{version}/{artifactId-version.packaging}

2.2.3 远程仓库的配置

经过POM文件的<repositories><repository>元素能够配置远程仓库,如:

<repositories>

   <repository>

     <id>jboss</id>

     <name>jboss repository</name>

     <url>http://repository.jboss.com/maven2/</url>

     <releases>

       <enabled>true</enabled>

     </releases>

     <snapshots>

       <enabled>false</enabled>

     </snapshots>

     <layout>default</layout>

   </repository>

 </repositories>

:必须是惟一的,默认的中央仓库id是central,若是使用了该id,会覆盖中央仓库配置。

:执行仓库的地址

:开发发布版本支持

:关闭快照版本支持

:值为default表示仓库的布局是Maven 2及Maven 3,而不是Maven 1.

相比于发布版本,快照版本还有下面两个属性:

<snapshots>

 <enabled>true</enabled>

 <updatePolicy>daily</updatePolicy>

 <checksumPolicy>ignore</checksumPolicy>

</snapshots>

:更新策略,默认 daily,可选择有 neveralwaysinterval:X (X分钟检查一次)。

Maven检查校验和的策略,默认值是 warn(校验不经过时警告),可选择还有 fail(校验不经过时构建失败)、 ignore(忽略校验错误)

2.3 镜像

若是仓库X能够提供仓库Y存储的全部内容,则认为X是Y的一个镜像。关于镜像的配置能够在${M2_HOME}/conf/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>

:匹配远程仓库的规则,匹配成功,则使用该镜像进行代理

Remark:因为镜像仓库彻底屏蔽了被镜像仓库,当镜像仓库不稳定或者中止服务时,Maven仍将没法访问被镜像仓库,于是将没法下载构件。

相关文章
相关标签/搜索