Maven快照机制(SNAPSHOT)

文章转自 http://www.cnblogs.com/EasonJim/p/6852840.html

以下引用自https://ayayui.gitbooks.io/tutorialspoint-maven/content/book/maven_snapshots.html

一、场景

一个大型的软件应用通常包含多个模块,并且通常的场景是多个团队开发同一应用的不同模块。举个例子,设想一个团队开发应用的前端,项目为app-ui(app-ui.jar:1.0),而另一个团队开发应用的后台,使用的项目是data-service(data-service.jar:1.0)

现在可能出现的情况是开发data-service的团队正在进行快节奏的bug修复或者项目改进,并且他们几乎每隔一天就要发布库到远程仓库。

现在如果data-service团队每隔一天上传一个新版本,那么将会出现下面的问题:

  • data-service团队每次发布更新的代码时都要告知app-ui团队。
  • app-ui团队需要经常地更新他们pom.xml文件到最新版本。

为了解决这种情况, 快照(SNAPSHOT)的概念派上了用场。

二、什么是快照(SNAPSHOT)

快照(SNAPSHOT)是一种特殊的版本,指定了某个当前的开发进度的副本。不同于常规的版本,Maven每次构建都会在远程仓库中检查新的快照

现在data-service团队会每次发布更新代码的快照到仓库中,比如说data-service:1.0-SNAPSHOT来替代旧的快照jar包。

注意:每次更新jar包时,版本好不变,且后缀必须带上-SNAPSHOT。

三、项目快照(Snapshot) VS 版本(Version)

版本(Version)的情况下,如果Maven以前下载过指定的版本文件,比如说data-service:1.0Maven将不会再从仓库下载新的可用的1.0文件。若要下载更新的代码,data-service的版本需要升到1.1

快照(Snapshot)的情况下,每次app-ui团队构建他们的项目时,Maven将自动获取最新的快照(data-service:1.0-SNAPSHOT)。

备注:版本(Version)存放在Release发布仓库。快照(Snapshot)存放在Snapshot快照仓库。

注意:版本(Version)的概念,只要不带有-SNAPSHOT的关键字时,都会认为这是一个在Release发布仓库的jar包。其中在Release发布仓库的jar包命名除了具体的版本号之后还可以带上比如:1.0-Release、1.0-rc1等等的字样。

四、原理详解

Maven中的仓库分为两种,Snapshot快照仓库Release发布仓库Snapshot快照仓库用于保存开发过程中的不稳定版本,Release正式仓库则是用来保存稳定的发行版本。定义一个组件/模块为快照版本,只需要在pom.xml文件中在该模块的版本号后加上-SNAPSHOT即可(注意这里必须是大写),如下所示:

<groupId>com.jsoft.test</groupId>
<artifactId>testcommon</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>jar</packaging>

Maven会根据模块的版本号(pom.xml文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本。如果是快照版本,那么在mvn deploy时会自动发布到快照版本库中,而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,Maven自动从镜像服务器上下载最新的快照版本。如果是正式发布版本,那么在mvn deploy时会自动发布到正式版本库中,而使用正式版本的模块,在不更改版本号的情况下,编译打包时如果本地已经存在该版本的模块则不会主动去镜像服务器上下载

所以,我们在开发阶段,可以将公用库的版本设置为快照版本,而被依赖组件则引用快照版本进行开发,在公用库的快照版本更新后,我们也不需要修改pom.xml文件提示版本号来下载新的版本,直接Maven执行相关编译、打包命令即可重新下载最新的快照库了,从而也方便了我们进行开发。

虽然,快照的情况下,Maven在日常工作中会自动获取最新的快照,你也可以在任何Maven命令中使用-U参数强制Maven下载最新的快照构建。命令如下:

mvn clean package -U

参考文章:

http://www.mzone.cc/article/277.html

https://maven.apache.org/settings.html#Repositories

时间: 2024-10-05 05:23:58

Maven快照机制(SNAPSHOT)的相关文章

Java-Maven-Runoob:Maven 快照(SNAPSHOT)

ylbtech-Java-Maven-Runoob:Maven 快照(SNAPSHOT) 1.返回顶部 1. Maven 快照(SNAPSHOT) 一个大型的软件应用通常包含多个模块,并且通常的场景是多个团队开发同一应用的不同模块.举个例子,设想一个团队开发应用的前端,项目为 app-ui(app-ui.jar:1.0),而另一个团队开发应用的后台,使用的项目是 data-service(data-service.jar:1.0). 现在可能出现的情况是开发 data-service 的团队正在

maven的快照机制

以下文章摘自https://ayayui.gitbooks.io/tutorialspoint-maven/content/book/maven_snapshots.html 一.场景 一个大型的软件应用通常包含多个模块,并且通常的场景是多个团队开发同一应用的不同模块.举个例子,设想一个团队开发应用的前端,项目为app-ui(app-ui.jar:1.0),而另一个团队开发应用的后台,使用的项目是data-service(data-service.jar:1.0). 现在可能出现的情况是开发da

快照(Snapshot)技术发展综述

快照(Snapshot)技术发展综述 刘爱贵 摘要:传统数据备份技术存在备份窗口.恢复时间目标RTO和恢复时间点RPO过长的问题,无法满足企业关键性业务的数据保护需求,因此产生了数据快照技术.本文对快照技术的概念.特点.实现技术和发展现状进行了概括性阐述,并对其未来的发展进行了展望. 关键词:快照,备份,复制,镜像,写时复制,指针重映射 作者简介:刘爱贵,研究方向为网络存储.数据挖掘和分布式计算:毕业于中科院,目前就职于赛门铁克@Symantec,从事存储软件研发.Email: [email p

Maven 快照

概述 大型应用软件一般由多个模块组成,一般它是多个团队开发同一个应用程序的不同模块,这是比较常见的场景.例如,一个团队正在对应用程序的应用程序,用户界面项目(app-ui.jar:1.0) 的前端进行开发,他们使用的是数据服务工程 (data-service.jar:1.0). 现在,它可能会有这样的情况发生,工作在数据服务团队开发人员快速地开发 bug 修复或增强功能,他们几乎每隔一天就要释放出库到远程仓库. 现在,如果数据服务团队上传新版本后,会出现下面的问题: 数据服务团队应该发布更新时每

oracle 快照(snapshot) 管理

 ----手工创建oracle 快照 BEGIN DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT (); END; / ---删除快照 具体快照信息可以查看视图 DBA_HIST_SNAPSHOT BEGIN DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE (low_snap_id => 22, high_snap_id => 32, dbid => 3310949047); END; / ---修改快照设置

HBase快照(Snapshot)技术

什么是快照 快照就是一份元信息的合集,允许管理员恢复到表的先前状态.快照不是表的复制而是一个文件名称列表,因而不会复制数据. 完全快照恢复是指恢复到之前的"表结构"以及当时的数据,快照之后发生的数据不会恢复. 快照的作用 HBase中存在的备份或克隆表的方法就是使用复制/导出表或者在关闭表之后拷贝HDFS中的所有HFile. 复制或导出是通过一系列工具调用MapReduce来扫描并复制表,这样会对RegionServer有直接的影响.关闭表会停止所有的读写操作,实际环境中往往无法接受.

maven 学习---Maven依赖机制

在 Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级. 案例分析 让我们看一个案例研究,以了解它是如何工作的.假设你想使用 Log4j 作为项目的日志.这里你要做什么? 1.在传统方式 访问 http://logging.apache.org/log4j/ 下载 Log4 j的 jar 库 复制 jar 到项目类路径 手动将其包含到项目的依赖 所有的管理需要一切由自己做 如果有 Log4j 版本升级,则需要重复上述步骤一次. 2. 在Maven的方式 你需要知道 log4j

快照(Snapshot)

一.定义: SNIA(存储网络行业协会)对快照(Snapshot)的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像.快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品.快照有三种基本形式:基于文件系统式的.基于子系统式的和基于卷管理器/虚拟化式的,而且这三种形式差别很大.市场上已经出现了能够自动生成这些快照的实用工具,比如有代表性的有NetApp的存储设备基于文件系统实现,高中低端设备使用共同的操作系统,都能够实现快照应用:HP的E

Maven 依赖机制

概述 在 Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级.让我们看一个案例研究,以了解它是如何工作的.假设你想使用 Log4j 作为项目的日志.这里你要做什么? 传统方式 访问 http://logging.apache.org/log4j/ 下载 Log4j 的 jar 库 复制 jar 到项目类路径 手动将其包含到项目的依赖 所有的管理需要一切由自己做 如果有 Log4j 版本升级,则需要重复上述步骤一次. Maven 的方式 你需要知道 log4j 的 Maven 坐