本篇内容为根据徐晓斌版《Maven实战》整理而成的学习笔记。
在Maven世界中,任何一个依赖、插件或者项目构建的输出,都可以称为构件,构件的逻辑表示方式是:坐标和依赖,构件的物理表示方式是:文件。
1. 仓库的布局:
根据构件的唯一坐标,可以定义其在仓库中的唯一存储路径。
路径与坐标的大致对应关系是:groupId/artifactId/version/artifactId-version.packaging。
2. 仓库的分类
A. 本地仓库
当Maven根据坐标寻找构件时,首先会查看本地仓库。本地仓库默认的目录路径为:.m2/repository。
需要修改路径时,先将$M2_HOME/conf/settings.xml文件复制到~/.m2/settings.xml,再对后者进行编辑,设置localRepository元素的值为想要的仓库地址。
B. 远程仓库
当本地仓库不存在此构件,或者需要查看是否有更新的构件版本时,Maven就会去远程仓库查找,发现需要的构件后,下载到本地仓库再使用。
a. 中央仓库:Maven核心自带的远程仓库,它包含了绝大部分开源的构件。
b. 私服:架设在局域网内的仓库服务,代理广域网上的远程仓库,供局域网内的Maven用户使用。
c. 其他公共库:如Java.net Maven库等。
3. 快照版本
Maven的版本分为快照版本和发布版本,快照版本,如2.1-SNAPSHOT,对应了大量的带有不同时间戳的构件。当快照版本发布时,Maven会自动为构件打上时间戳,有了该时间戳,Maven就能随时找到仓库中该构件的最新文件。当依赖方构件该模块时,Maven会自动从仓库中检查模块的2.1-SNAPSHOT的最新构件,当发现有更新时就进行下载。默认情况下,Maven每天检查一次更新,用户也可以使用命令行-U参数强制让Maven检查更新。