【Maven】Maven的快照库和发行库
1、分类
Maven 支持两种类型的仓库:快照库(Snapshot Repository)和发行库(Release Repository),用于存储不同性质的构件(Artifacts)。
(1) 快照库 (Snapshot Repository):
- 用途:快照库主要用于存储开发过程中的不稳定版本,这些版本是开发者在开发过程中频繁更新的版本。
- 特点:
- 版本号以 -SNAPSHOT 结尾,例如 1.0-SNAPSHOT。
- 每当源代码发生变化并构建时,即使版本号没有改变,Maven 也会尝试从远程快照库下载最新的快照版本。
- 适合于处于积极开发阶段的项目,允许团队成员共享最新的工作进展而不必每次更改版本号。
(2) 发行库 (Release Repository):
- 用途:发行库用于存储稳定的发布版本。这些版本已经过测试,并且可以被其他项目作为依赖项安全地引用。
- 特点:
- 版本号不包含 -SNAPSHOT,例如 1.0。
- 一旦发布到发行库中,构件的内容不应该再改变。如果需要修正错误或添加功能,则应发布新版本。
- 适合于发布的稳定版本,确保用户获得的是经过验证的代码。
2、实战—配置工作
将 jar 包或 war 包安装到本地仓库不需要指定快照库或发行库,因为本地仓库就一个,不区分快照或发行。如果谈到了快照库或发行库,那就是需要将打包好的 jar 包或 war 包等部署到远程仓库或私服。这时候就需要做一些配置了。
(1) 在pom文件中配置仓库
要在 Maven 项目中配置快照库和发行库,需要编辑项目的 pom.xml 文件,在 <distributionManagement>
元素内定义仓库的信息:
<distributionManagement>
<repository> <!-- 发行库 -->
<id>releases</id>
<name>User Project Release</name>
<url>http://example.com/maven/releases</url>
</repository>
<snapshotRepository> <!-- 快照库 -->
<id>snapshots</id>
<name>User Project Snapshots</name>
<url>http://example.com/maven/snapshots</url>
</snapshotRepository>
</distributionManagement>
说明:
- id 标签是快照库或发行库的唯一标识。在私服或远程仓库中创建快照库或发行库时指定需要指定一个 id,然后在本地 settings.xml 文件中指定(后面会讲到)。
- url 是私服或远程仓库的地址。
2、在本地配置文件配置远程仓库的信息
如果想要将构件部署到私有仓库(如 Nexus),还需要在 ~/.m2/settings.xml 文件中配置服务器认证信息:
<servers>
<server>
<id>releases</id> <!-- 发行库 -->
<username>yourUsername</username>
<password>yourPassword</password>
</server>
<server>
<id>snapshots</id> <!-- 快照库 -->
<username>yourUsername</username>
<password>yourPassword</password>
</server>
</servers>
说明:
- id 标签必须和私服或远程仓库中指定的 id 相同。
- username 和 password 是登陆访问私服或远程仓库的凭证。
私服搭建和部署可以参考:https://blog.csdn.net/m0_46308522/article/details/144118804?spm=1001.2014.3001.5502
确保 pom.xml 中声明的仓库 id 与配置文件的 元素匹配。这样,当执行 mvn deploy 命令时,Maven 将根据项目的版本号自动选择正确的仓库进行部署。