Maven快照(SNAPSHOT)版本介绍
在 Maven 中,任何一个项目和构件都必须有自己的版本。版本的值可能是 1.0.0、1.0-alpha-4、1.3-SNAPSHOT 等,其中 1.0.0、1.0-alpha-4 是稳定的发布版本,而 1.3-SNAPSHOT 为不稳定的快照版本。
Maven 为什么要添加一个快照版本的控制呢?
假设张三在开发用户管理模块的 1.1 版本,该版本还没有正式发布。以前的用户管理模块和权限管理模块是由李四在单独开发的。其中,权限管理模块的功能是依赖用户管理模块的。
在开发过程中,张三经常要将最新的用户管理模块构建输出,交给李四,让他对权限管理模块进行开发集成和调试。这种问题,如果由用户自己手动控制的话,相对比较麻烦。但 Maven 基于快照机制,就能自动解决这个问题。
基于 Maven 的快照机制,张三只需将用户管理模块的版本设置成 1.1-SNAPSHOT,然后发布到私服中。
在发布过程中,Maven 会自动为构件打上时间戳,比如 1.1-20161211.111111-11,表示 2016 年 12 月 11 日 11 点 11 分 11 秒的第 11 次的快照。有了这个时间戳,Maven 就能随时找到仓库中用户管理构件 1.1-SNAPSHOT 版本的最新文件。
这时,李四配置对用户管理模块的 1.1-SNAPSHOT 版本的依赖,当他构建权限管理模块的时候,Maven 会自动从仓库中检测用户管理 1.1-SNAPSHOT 的最新构件,发现最新构件后就自动下载。
Maven 默认情况下,每天检测一次(具体实际情况,由参考配置的 updatePolicy 控制),当然,也可以使用 mvn-U 强制让 Maven 检测更新。如 mvn clean install-U。
基于这样的机制,张三在构建成功后,将构件发布到仓库,李四可以完全考虑用户管理模块的构件,并且他还能确保随时得到用户管理模块的最新可用的快照构件,这些所有的一切都由 Maven 自动完成。
快照版本只应该在开发团队内部的项目或模块之间依赖使用。这个时候,团队成员对这些快照版本的依赖具有完全的理解和控制权利。
项目不应该依赖任何团队外部的快照版本依赖。由于快照版本的不稳定性,这样的依赖会造成潜在的危险。也就是说,即使项目构建这次成功了,由于外部的快照版本依赖会随时间改变而再次更新,下次构建的时候有可能会失败。
Maven 为什么要添加一个快照版本的控制呢?
假设张三在开发用户管理模块的 1.1 版本,该版本还没有正式发布。以前的用户管理模块和权限管理模块是由李四在单独开发的。其中,权限管理模块的功能是依赖用户管理模块的。
在开发过程中,张三经常要将最新的用户管理模块构建输出,交给李四,让他对权限管理模块进行开发集成和调试。这种问题,如果由用户自己手动控制的话,相对比较麻烦。但 Maven 基于快照机制,就能自动解决这个问题。
基于 Maven 的快照机制,张三只需将用户管理模块的版本设置成 1.1-SNAPSHOT,然后发布到私服中。
在发布过程中,Maven 会自动为构件打上时间戳,比如 1.1-20161211.111111-11,表示 2016 年 12 月 11 日 11 点 11 分 11 秒的第 11 次的快照。有了这个时间戳,Maven 就能随时找到仓库中用户管理构件 1.1-SNAPSHOT 版本的最新文件。
这时,李四配置对用户管理模块的 1.1-SNAPSHOT 版本的依赖,当他构建权限管理模块的时候,Maven 会自动从仓库中检测用户管理 1.1-SNAPSHOT 的最新构件,发现最新构件后就自动下载。
Maven 默认情况下,每天检测一次(具体实际情况,由参考配置的 updatePolicy 控制),当然,也可以使用 mvn-U 强制让 Maven 检测更新。如 mvn clean install-U。
基于这样的机制,张三在构建成功后,将构件发布到仓库,李四可以完全考虑用户管理模块的构件,并且他还能确保随时得到用户管理模块的最新可用的快照构件,这些所有的一切都由 Maven 自动完成。
快照版本只应该在开发团队内部的项目或模块之间依赖使用。这个时候,团队成员对这些快照版本的依赖具有完全的理解和控制权利。
项目不应该依赖任何团队外部的快照版本依赖。由于快照版本的不稳定性,这样的依赖会造成潜在的危险。也就是说,即使项目构建这次成功了,由于外部的快照版本依赖会随时间改变而再次更新,下次构建的时候有可能会失败。
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频