Maven快照究竟是什么,为何咱们须要它?

我对Maven快照的含义有点困惑,为何咱们要构建一个快照? spring


#1楼

这就是存储库快照的外观,而且在这种状况下未启用快照,这意味着此处引用的存储库是稳定的,不须要更新。 maven

<project>
    ...
    <repositories>
        <repository>
            <id>lds-main</id>
            <name>LDS Main Repo</name>
            <url>http://code.lds.org/nexus/content/groups/main-repo</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
</project>

另外一种状况是: 测试

<snapshots>
        <enabled>true</enabled>
</snapshots>

这意味着Maven将寻找该存储库的更新。 您还可使用标签指定更新间隔。 url


#2楼

一般在Maven中,咱们有两种类型的内部版本1)快照内部版本2)发布内部版本 spa

  1. 快照版本:SNAPSHOT是特殊版本,用于指示当前的部署副本与常规版本不一样,maven会检查远程存储库中每一个版本的版本,所以快照版本不过是开发版本。 版本控制

  2. 发布版本:发行意味着删除该版本的SNAPSHOT,这是常规的版本。 code


#3楼

Maven版本能够包含字符串文字“ SNAPSHOT”,以表示当前正在积极开发项目。 图片

例如,若是您的项目的版本为“ 1.0-SNAPSHOT”,而且将该项目的工件部署到Maven存储库,那么若是要在11处部署发行版,则Maven会将该版本扩展为“ 1.0-20080207-230803-1” UTC时间:2008年2月7日晚上8点。 换句话说,部署快照时,并非要发布软件组件;而是要发布软件组件。 您将在特定时间发布组件的快照。 开发

所以,快照版本主要用于活动开发中的项目。 若是您的项目依赖于正在开发中的软件组件,则能够依赖快照发行版,而且在运行构建时,Maven会按期尝试从存储库下载最新的快照。 一样,若是系统的下一发行版将具备“ 1.8”版本,则在正式发行以前,您的项目将具备“ 1.8-SNAPSHOT”版本。 字符串

例如,如下依赖项将始终下载spring的最新1.8开发JAR:

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring</artifactId>
        <version>1.8-SNAPSHOT”</version>
    </dependency>

马文

Maven发布过程的一个例子

在此处输入图片说明


#4楼

我想谈一谈术语。 其余答案很好地解释了Maven上下文中的“快照”版本。 可是,是否应该将非快照版本称为“发行”版本呢?

有一个“放”版本的语义版本的想法,这彷佛是没有限定词,如任何版本之间的一些紧张-SNAPSHOT也没有一个限定词,如-beta.4 ; 和Maven的“发行”版本的想法,其中彷佛仅包括-SNAPSHOT的缺失。

换句话说,“发布”是指“咱们能够将其发布到Maven Central”仍是“该软件已最终发布给公众”,这在语义上是模棱两可的。 若是将-beta.4公开发布,咱们能够认为-beta.4是“发布”版本,但它不是“最终发布”。 语义版本控制清楚地代表, -beta.4类的-beta.4是“预发行”版本,所以即便没有-SNAPSHOT ,将其称为“发行”版本也没有-SNAPSHOT 。 实际上,根据定义,即便-rc.5也是一个发行候选版本,而不是实际发行版,即便咱们能够容许公众访问进行测试。

所以,尽管如此,我认为Maven彷佛更合适的是只调用一个根本没有任何限定符的“发布”版本,甚至没有-beta.4 。 对于Maven非快照版本,更好的名字多是“稳定”版本(受另外一个答案的启发)。 所以,咱们将有:

  • 1.2.3-beta.4-SNAPSHOT :预发行版本的快照版本。
  • 1.2.3-SNAPSHOT :发行版的快照版本。
  • 1.2.3-beta.4 :预发行版本的稳定版本。
  • 1.2.3 :发行版(显然是稳定的非快照版本)。

#5楼

了解SDLC的上下文将有助于了解快照和发行版之间的区别。 在开发过程当中,开发人员都将其功能贡献给基准分支。 在某个时候,线索认为已经积累了足够的功能,那么他将从基准分支中删除发布分支。 在此时间点以前的全部构建都是快照。 到此为止的构建都是发行版。 须要注意的是,若是在发布测试期间发现任何缺陷,则发布版本在投入生产以前也可能会发生变化。

相关文章
相关标签/搜索