Spring IO Platform專案作為Spring的主要專案之一,其目的就是用來解決依賴包的版本問題。Spring IO Platform官方的定義是:
Spring IO is a cohesive, versioned platform for building modern applications. It is a modular, enterprise-grade distribution that delivers a curated set of dependencies while keeping developers in full control of deploying only the parts they need. Spring IO is 100% open source, lean, and modular.
Spring IO 是一個用於構建現代應用程式的、有凝聚力的版本化平臺。它是一個模組化的、企業級的分佈,提供了一組策略依賴關係。同時,開發人員只需部署他們所需要的部分。Spring IO是100%開源、精益和模組化的專案。
背景
在構建專案時,經常會使用到第三方庫,一般大家都是根據經驗或直接選擇較新的版本,隨意性較大。隨著業務複雜度的增加,整合的第三方庫會越來越多,依賴關係也會越來越複雜。除非做過完整的測試,保證整合第三方庫的版本不會出問題,且後續整合或升級都不會出問題,否則就有可能存在較大的隱性風險(版本衝突)。
Spring IO Platform就能很好地幫助我們解決這些問題。開發人員在新增第三方庫時,不需要關心版本號,Spring IO Platform會幫助我們提供一個最優的版本,而且該版本是經過嚴格測試的,可以更好地相容其它的元件。同時,你也可以根據自己的需要來升級或降級依賴版本。
Spring IO Platform的主要特徵:
- 一個平臺,多種工作負載 – 構建Web,整合,批處理,響應式或大資料應用。
- 通過Spring Boot從根本上簡化開發體驗。
- 開箱即用。
- 精心策劃和協調一致的依賴關係。
- 模組化平臺,允許開發人員只部署他們所需的依賴。
- 支援嵌入式、傳統應用伺服器和PaaS部署。
- 只依賴Java SE,並且支援Groovy, Grails和一些Java EE。
- 適用於存在的依賴管理工具,例如Maven和Gradle。
- Spring IO Platform已通過JDK7和8以上的認證。
快速開始
如果你準備使用Spring IO Platform,建議到官網獲取最新的專案版本:https://platform.spring.io/pl…。
本文編寫時的最新版本:Brussels-SR6
Maven
在Maven專案中新增如下依賴管理:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.spring.platform</groupId>
<artifactId>platform-bom</artifactId>
<version>Brussels-SR6</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Gradle
在Gradle專案中新增如下依賴管理:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath `io.spring.gradle:dependency-management-plugin:1.0.0.RELEASE`
}
}
apply plugin: `io.spring.dependency-management`
dependencyManagement {
imports {
mavenBom `io.spring.platform:platform-bom:Brussels-SR6`
}
}
如何使用
在整合Spring IO Platform提供的依賴管理後,你仍然可以像平時一樣新增第三方庫,只是無需再關心依賴包的版本:
檢視所有依賴包的版本資訊:https://docs.spring.io/platfo…
Maven
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
Gradle
dependencies {
compile `org.springframework:spring-core`
}
覆蓋Spring IO Platform中依賴包的版本
Spring IO Platform專案整合的第三方庫的版本資訊都是使用<properties />
來定義的,這就使得你可以很容易的升級或降級某個依賴包的版本。在你的專案中指定依賴包的版本號:
<properties>
<foo.version>1.2.0.RELEASE</foo.version>
</properties>
在使用Spring IO Platform專案的依賴管理時,應根據專案的實際執行環境來合理選擇版本號,除非必須,否則不建議修改版本資訊。在修改依賴包的版本資訊時,可通過IDE點選座標來檢視依賴包對應的屬性名。
小結
Spring IO Platform專案的本質就是一個pom檔案,它記錄了Spring專案和其它第三方庫對應的版本資訊。由於Spring IO Platform專案幫助我們做了大量的整合和測試工作,使得我們可以輕鬆使用。
如今,使用Spring Boot的專案也越來越多,它的spring-boot-dependencies
模組就是一個類似Spring IO Platform的專案,兩者的區別就是整合的依賴包和外掛有所不同。
在企業級專案開發和管理中,Spring IO Platform專案絕對是值得你花時間去學習和研究的。你可以在Spring IO Platform專案的基礎上進行改進,增加一些國產開源專案的整合和企業私有庫的管理,構建企業內部的專案版本平臺,促進企業專案的統一管理。