当前位置: 首页 > news >正文

HoRain云--Maven 快照(SNAPSHOT)

一个大型的软件应用通常包含多个模块,并且通常的场景是多个团队开发同一应用的不同模块。举个例子,设想一个团队开发应用的前端,项目为 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 文件到最新版本。

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


什么是快照?

快照是一种特殊的版本,指定了某个当前的开发进度的副本。不同于常规的版本,Maven 每次构建都会在远程仓库中检查新的快照。 现在 data-service 团队会每次发布更新代码的快照到仓库中,比如说 data-service:1.0-SNAPSHOT 来替代旧的快照 jar 包。


项目快照 vs 版本

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

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

app-ui 项目的 pom.xml 文件

app-ui 项目使用的是 data-service 项目的 1.0 快照。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>app-ui</groupId> <artifactId>app-ui</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>health</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>data-service</groupId> <artifactId>data-service</artifactId> <version>1.0-SNAPSHOT</version> <scope>test</scope> </dependency> </dependencies> </project>

data-service 项目的 pom.xml 文件

data-service 项目为每次小的改动发布 1.0 快照。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>data-service</groupId> <artifactId>data-service</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>health</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> </project>

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

mvn clean package -U

让我们打开命令控制台,去到 C:\ > MVN > app-ui 目录,然后执行下面的 mvn 命令。

C:\MVN\app-ui>mvn clean package -U

Maven 将在下载 data-service 最新的快照之后,开始构建项目。

[INFO] Scanning for projects... [INFO] ------------------------------------------------------------------- [INFO] Building consumerBanking [INFO] task-segment: [clean, package] [INFO] ------------------------------------------------------------------- [INFO] Downloading data-service:1.0-SNAPSHOT [INFO] 290K downloaded. [INFO] [clean:clean {execution: default-clean}] [INFO] Deleting directory C:\MVN\app-ui\target [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory C:\MVN\app-ui\src\main\ resources [INFO] [compiler:compile {execution: default-compile}] [INFO] Compiling 1 source file to C:\MVN\app-ui\target\classes [INFO] [resources:testResources {execution: default-testResources}] [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory C:\MVN\app-ui\src\test\ resources [INFO] [compiler:testCompile {execution: default-testCompile}] [INFO] Compiling 1 source file to C:\MVN\app-ui\target\test-classes [INFO] [surefire:test {execution: default-test}] [INFO] Surefire report directory: C:\MVN\app-ui\target\ surefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.companyname.bank.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.027 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [jar:jar {execution: default-jar}] [INFO] Building jar: C:\MVN\app-ui\target\ app-ui-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2 seconds [INFO] Finished at: Tue Jul 10 16:52:18 IST 2012 [INFO] Final Memory: 16M/89M [INFO] ------------------------------------------------------------------------
http://www.jsqmd.com/news/1379730/

相关文章:

  • 无需编程:利用ST-LINK调试器直接读取STM32芯片唯一ID的完整指南
  • 基于RAG架构与ACM API的LLM学术知识增强实践指南
  • Cadence 16.6安装全攻略:从原理到实战,解决EDA软件部署难题
  • 2026 青岛别墅防水公司怎么选?7 条标准帮你避开行业坑 - 青岛防水品牌推荐
  • 终极指南:如何使用Tftpd64免费轻量级网络服务套件实现高效网络管理
  • Windows系统盘空间告急?彻底迁移Users文件夹释放C盘空间
  • 冷启动第一秒放进来 200 个连接,数据库直接被打挂:RateLimiter 的 WarmUp 和漏桶的死队列
  • 学工系统-学工一体化平台-学校学工系统 解决方案
  • 做镁合金加工需要采购切削液,哪家正规加工厂更值得信赖? - GrowthUME
  • 情感陪伴AI:从大语言模型到数字基础设施的技术演进与应用
  • 寻找老牌生产企业?皮箱模拟行走路况试验机哪家好与诚信厂家联系方式 - 品牌推荐大师
  • python hot 100——4 动态规划
  • 湖州热门烘焙面包培训机构|港焙学校真实测评 - 港焙西点-知美人美学
  • 3天让你的安卓手机脱胎换骨:Universal Android Debloater 终极优化指南
  • 猫抓浏览器扩展:三步轻松抓取网页视频资源的终极指南
  • 湖南省选武校看这篇就够了|洪江市、冷水江市、涟源市、吉首市文武学校口碑实力汇总 - 圣龙武术朱老师
  • 2026台式RFID和条码打印机行业分析:双模识别技术如何驱动工业标识升级?
  • PyQt5安装失败全解析:从VC++编译到.whl轮子解决方案
  • Sticky:Linux桌面便签的终极解决方案,让数字灵感永不丢失
  • AI音乐生成与音频分析技术:从重型金属吉他到自动化音乐处理实践
  • 2026年阜新新媒体运营推广合规服务商中网创信怎么选?服务体系、内容协同与避坑指南 - 中国远见品牌企业资讯
  • 商业综合体地下车库反向寻车,千万别盲目上蓝牙AOA!
  • Nemotron 3.5 Lightning + NeMo Switchyard深度解析:30B MoE仅3B活跃参数,从蒸馏到路由的AI Agent执行层新范式
  • 2026广东成人高考|财大全新专业调整,上班族升本优选 - 湖北找学校
  • 小白也能学会!如何远程访问公司内网的 FastAPI 服务
  • 从Function Calling到MCP:构建安全可控的生产级AI Agent系统
  • 9款必备MCP Server配置指南:解锁Cursor AI私有数据访问与效率革命
  • 如何系统评估与淘到高价值周边模型:从信息搜集到真伪鉴别全流程
  • 2026年涿州钻石回收怎么选靠谱商家?(185-3117-2838)火炬路204赵掌柜二奢店实体门店规范鉴定指南 - 赵掌柜二奢
  • Pygame性能优化:脏矩形技术原理、实战与避坑指南