Spring 版本更新

工程 | Rob Winch | 2020年4月30日 | ...

Spring 團隊已決定變更發布列車專案模組的版本控制方案。這些變更將在下一個發布列車以及每個專案的次要版本發布中推出。事實上,這些變更已在Spring Cloud 2020.0.0-M1中實作。Maven 和 Gradle 未提供完全相同的版本排序,但我們正與 Gradle 團隊合作,以確保 Spring 方案最終在這兩種工具中都以相同方式排序。

發布列車版本變更

自 2013 年以來,Spring 一直使用按字母順序排列、主題式的發布列車版本。發布列車包含一組可良好協同運作的專案版本,但不保證升級到下一個發布列車時,底層程式庫的向後相容性。

從那時起,社群針對版本名稱提出了一些疑慮,而我們也聽取了這些意見。主要疑慮是,對於非英語母語人士來說,此方案在按字母順序排序時可能具有挑戰性。此外,主題式名稱可能難以記住版本名稱。最後,某些主題名稱的拼寫可能具有挑戰性。

為了消除這些疑慮,Spring 團隊已決定改用日曆版本控制 (calver),使用 YYYY.MINOR.MICRO[-MODIFIER] 方案,其中

  • YYYY 為完整年份。

  • MINOR 是每年遞增的從 0 開始的數字。

  • MICRO 是修補程式版本。

  • MODIFIER 是選用修飾詞,其中 <COUNT> 是遞增的從 1 開始的數字

    • 對於里程碑版本,我們將使用 M<COUNT>

    • 對於候選發布版本,我們將使用 RC<COUNT>

    • 對於快照版本,我們將使用 -SNAPSHOT。請注意,我們先前方案中存在的 .BUILD 已移除。

    • 對於正式發布版本,將沒有修飾詞。

版本順序範例為 2020.0.0-M12020.0.0-M22020.0.0-RC12020.0.0-SNAPSHOT2020.0.02020.0.1-SNAPSHOT2020.0.12020.1.0-M12020.1.0-M22020.1.0-RC12020.1.0-SNAPSHOT2020.1.0 等。

這解決了對向後相容性意涵的疑慮問題,簡化了非英語母語人士的排序,比基於名稱的版本更容易記住,並消除了拼寫方面的挑戰。與許多其他使用 calver 的專案一樣,Spring 團隊也可能會繼續使用代號來指稱每個列車,這些代號遵循其版本的舊慣例。

專案模組版本變更

自 2008 年Spring Framework 3.0.0.M1發布以來,Spring 團隊一直使用與 OSGi 語意化版本控制 相容的相同版本。我們認為,既然我們正在重新檢視發布列車版本控制方案,那麼最好也重新檢視我們的專案模組版本。

雖然擁有與 OSGi 相容的版本很方便,但為了使 Maven 版本與 OSGi 相容,沒有必要這樣做,因為套件組合中繼資料可以在其中指定與 OSGi 相容的版本。我們決定新的版本控制方案將遵循語意化版本控制中定義的語法,以協助剖析版本號碼。我們也希望我們的版本能讓 Java 開發人員感到熟悉。鑑於上述資訊,我們決定改用 MAJOR.MINOR.PATCH[-MODIFIER] 的版本方案,其中

  • MAJOR 若遞增,可能需要大量工作才能升級。

  • MINOR 若遞增,應只需少量或無需任何工作即可升級。

  • PATCH 若遞增,應無需任何工作。

  • MODIFIER 是選用修飾詞,其中 <COUNT> 是遞增的從 1 開始的數字

    • 對於里程碑版本,我們將使用 M<COUNT>

    • 對於候選發布版本,我們將使用 RC<COUNT>

    • 對於快照版本,我們將使用 -SNAPSHOT。請注意,我們先前方案中存在的 .BUILD 已移除。

    • 對於正式發布版本,將沒有修飾詞。

版本順序範例為 2.3.0-M12.3.0-M22.3.0-RC12.3.0-RC22.3.0-SNAPSHOT2.3.02.3.1-SNAPSHOT2.3.12.4.0-M12.4.0-M22.4.0-RC12.4.0-SNAPSHOT2.4.0 等。

結論

我們要感謝社群的各位提供意見回饋,我們希望這些變更將改善您使用 Spring 的體驗!

取得 Spring 電子報

隨時接收 Spring 電子報的最新消息

訂閱

領先一步

VMware 提供訓練與認證,加速您的進展。

深入瞭解

取得支援

Tanzu Spring 在單一訂閱中,為 OpenJDK™、Spring 和 Apache Tomcat® 提供支援與二進位檔案。

深入瞭解

即將到來的活動

查看 Spring 社群中所有即將到來的活動。

查看全部