【Maven】Maven之使用maven快照版本机制进行多项目依赖开发

  Maven的快照版本机制就是为了解决多项目依赖开发存在频繁更改maven依赖版本的问题。比如模块B依赖模块A,只需要将模块A的版本设定为0.0.1-SNAPSHOT,然后发布到私服中,在发布的过程中,Maven会自动为构件打上时间戳。比如0.0.1-20191214.221414-13就表示2019年12月14日22点14分14秒的第13次快照。有了该时间戳,Maven就能随时找到仓库中该构件0.0.1-SNAP-SHOT版本最新的文件。这时,模块B配置对于模块A的0.0.1-SNAPSHOT版本的依赖,当构建模块B的时候,Maven会自动从仓库中检查模块A的0.0.1-SNAPSHOT的最新构件,当发现有更新时便进行下载。默认情况下,Maven每天检查一次更新(由仓库配置的updatePolicy控制)

,用户也可以使用命令行-U参数强制让Maven检查更新,如mvn clean install-U

<snapshots>
    <enabled>true</enabled>
    <updatePolicy>daily</updatePolicy>
    <checksumPolicy>ignore</checksumPolicy>
</snapshots>
    元素updatePolicy用来配置Maven从远程仓库检查更新的频率,默认的值是daily,表示Maven每天检查一次。其他可用的值包括:never——从不检查更新;always——每次构建都检查更新;in-terval:X——每隔X分钟检查一次更新(X为任意整数)。
    元素checksumPolicy用来配置Maven检查检验和文件的策略。当构件被部署到Maven仓库中时,会同时部署对应的校验和文件。在下载构件的时候,Maven会验证校验和文件,如果校验和验证失败,怎么办?当checksumPolicy的值为默认的warn时,Maven会在执行构建时输出警告信息,其他可用的值包括:fail——Maven遇到校验和错误就让构建失败;ignore——使Maven完全忽略校验和错误。

  基于快照版本机制,模块A在构建成功之后才能将构件部署至仓库,而模块B可以完全不用考虑模块A的构建,并且模块B能确保随时得到模块A的最新可用的快照构件,而这一切都不需要额外的手工操作。

当项目经过完善的测试后需要发布的时候,就应该将快照版本更改为发布版本。例如,将0.0.1-SNAPSHOT更改为0.0.1,表示该版本已经稳定,且只对应了唯一的构件。相比之下,0.0.1-SNAPSHOT往往对应了大量的带有不同时间戳的构件,这也决定了其不稳定性。

快照版本只应该在组织内部的项目或模块间依赖使用,因为这时,组织对于这些快照版本的依赖具有完全的理解及控制权。项目不应该依赖于任何组织外部的快照版本依赖,由于快照版本的不稳定性,这样的依赖会造成潜在的危险。也就是说,即使项目构建今天是成功的,由于外部的快照版本依赖实际对应的构件随时可能变化,项目的构建就可能由于这些外部的不受控制的因素而失败。

原文地址:https://www.cnblogs.com/756623607-zhang/p/12182379.html

时间: 2024-11-03 19:17:11

【Maven】Maven之使用maven快照版本机制进行多项目依赖开发的相关文章

Maven详解之------maven版本管理

本文允许转载,但请标明出处:http://blog.csdn.net/wanghantong/article/38424065, 版权所有 现在所说的maven版本不同于SVN的版本控制哦!!! 之前我们说过Maven的版本分为快照和稳定版本,快照版本使用在开发的过程中,方便于团队内部交流学习.而所说的稳定版本,理想状态下是项目到了某个比较稳定的状态,这个稳定包含了源代码和构建都要稳定. 一.如何衡量项目的稳定状态呢? 1. 所有的自动化测试应当全部通过 2. 项目没有配置任何快照版本的依赖 3

maven快照版本和发布版本

在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次.我们知道,maven的依赖管理是基于版本管理的,对于发布状态的artifact,如果版本号相同,即使我们内部的镜像服务器上的组件比本地新,maven也不会主动下载的.如果我们在开发阶段都是基于正式发布版本来做依赖管理,那么遇到这个问题,就需要升级组件的版本号,可这样就明显不符合要求和实际情况了.但是,如果是基于快照版本,那么问题就自热而然的解决了

如何在Maven官网下载到历史版本

历史版本一般会隔一段时间,便找不到,官网会及时显示的是最新版本.不多说,直接进入. https://archive.apache.org/dist/maven/binaries/ 成功在Maven官网里下载到历史版本! 其它,依次类推.

Maven配置默认使用的JDK版本

问题: 创建maven项目的时候,jdk版本是1.7版本,而自己安装的是1.8版本,从而导致无法使用lambda等Java8新特性. 每次右键项目名-maven->update project 时候,项目jdk版本就会变回1.7版本. 解决办法: 解决办法一:在项目中的pom.xml指定jdk版本 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> &

eclipse maven插件配置,jdk全局版本调整

settings.xml </profiles>标签前追加: <profile>      <id>jdk-1.7</id> <activation>        <activeByDefault>true</activeByDefault>        <jdk>1.7</jdk>      </activation>      <properties>        

maven 学习1 -安装maven 并执行编译命令

一.maven 下载与安装(安装好jdk的前提下) 1.下载地址:http://maven.apache.org/download.cgi  (选择最新的zip版本),下载完毕后解压 2.安装:系统path变量后面加maven的bin路径,也可配置MAVEN_HOME系统变量(%MAVEN_HOME%\bin)来操作 3.运行cmd命令来查看安装情况 mvn-v 二.手动新建一个maven项目,使用maven编译 (maven项目关键就在与pom.xml文件) 1.建立项目目录,新建一个文件夹(

Maven学习3-使用Maven构建项目

转自:http://www.cnblogs.com/xdp-gacl/p/4240930.html maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的过程. 一.构建Jave项目 1.1.创建Jave Project 1.使用mvn archetype:generate命令,如下所示: mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -Darchety

Maven实战之初识Maven

Maven实战之初识Maven Maven的简单介绍 作用:Maven主要用于项目的构建,管理项目的依赖以及项目的信息(自动化构建.编译.单元测试.生成文档.打包.部署) 优势:相对于Ant.Make等,Maven抽象构建过程,提供构建任务的实现,自动化构建,有效地提高了开发效率,使开发人员可以集中精力在主要的开发任务上.而且Maven是跨平台工具,意味着在主流操作系统中,Maven都提供了对应的技术支持 使用注意:需要在JDK1.4及以上版本使用 Maven的安装 下载地址:Maven下载地址

Maven(二)Maven项目的创建(命令、myeclipse)及生命周期

上一篇给大家介绍了Maven的概念和仓库的一些信息,接下来给大家分享一下使用命令和MyEclipse创建Maven项目 一.使用命令管理Maven项目 1.1.创建Maven java项目 1)创建一个文件夹(MavenProject)——>该文件夹下按shift+右击选择在此处打开命令窗口——>这样创建的maven[java]项目就在该文件夹下 2)命令:mvn archetype:generate -DgroupId=com.zyh.maven.quickstart -DartifactI