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

Posted 王小帅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven实战读书笔记:Maven坐标与仓库相关的知识,希望对你有一定的参考价值。

2.1 Maven坐标

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

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

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

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

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

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

2.2 Maven仓库

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

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

2.2.1 仓库的分类

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

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>

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

<snapshots>

 <enabled>true</enabled>

 <updatePolicy>daily</updatePolicy>

 <checksumPolicy>ignore</checksumPolicy>

</snapshots>

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仍将无法访问被镜像仓库,因而将无法下载构件。




以上是关于Maven实战读书笔记:Maven坐标与仓库的主要内容,如果未能解决你的问题,请参考以下文章

《Maven实战》读书笔记 —— Maven坐标和依赖

读书笔记——《Maven实战》

Maven实战读书笔记:Maven概述

Maven实战读书笔记:Maven灵活构建

Maven实战读书笔记:Maven生命周期与插件

Maven实战读书笔记:聚合与继承