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的上下文將有助於瞭解快照和發行版之間的區別。 在開發過程當中,開發人員都將其功能貢獻給基準分支。 在某個時候,線索認爲已經積累了足夠的功能,那麼他將從基準分支中刪除發佈分支。 在此時間點以前的全部構建都是快照。 到此爲止的構建都是發行版。 須要注意的是,若是在發佈測試期間發現任何缺陷,則發佈版本在投入生產以前也可能會發生變化。

相關文章
相關標籤/搜索