在使用商業版 SOFABoot 時,可能會因為安全、性能、功能增強等原因而期望升級第三方 JAR。如果在臨近的高版本 SOFABoot 中有滿足需求的第三方 JAR,可以考慮升級 SOFABoot 來解決問題。但如果暫時沒有滿足需求的 SOFABoot 版本,或需要升級的版本存在 SpringBoot 升級等大的更新,則可能需要為此付出等待成本和回歸測試成本,代價較大。此時可考慮手工升級 SOFABoot 管理的第三方 JAR。
SOFABoot 遵從 SpringBoot 的包管理規范,采用 Maven 的 dependencyManagement 進行 JAR 包版本管理,對主要的第三方 JAR 都抽取了 Properties。Maven 支持子 pom 覆蓋父 pom 的 Properties,可以使用此方式來按需自定義第三方 JAR 的版本。
以 fastjson 為例,在指定了 SOFABoot 為 parent 的 pom 中配置如下信息,即可指定 fastjson 的版本。
Properties 中的 fastjson.version
用于覆蓋商業版 SOFABoot 中的同名 property,因此必須使用這個名稱。
所有受 SOFABoot 管控的第三方 JAR,都可以使用此方式來修改其版本。您可以通過查看 sofaboot-enterprise-dependencies 的 pom.xml
中所有的 Properties 來確認指定第三方 JAR 版本的 Key,并在自己的 pom 中修改它,但需注意以下兩點:
此方式是 Maven 提供的機制,適用于所有父級 pom 控制的第三方 JAR 版本的修改,除了商業版 SOFABoot 外,開源版 SOFABoot、Spring Boot 所管理的第三方JAR的版本修改也都適用于此方法。
建議僅升級 JAR 包版本,不要降級。升級以前,需與 JAR 包發行方確認兼容性,避免出現兼容問題。
查找第三方 JAR 版本控制 Key 的方法(以 idea 為例):
打開項目引用商業版 SOFABoot 的 pom 文件,找到
parent/artifactId
節點。按住 Ctrl 鍵,然后點擊 sofaboot-enterprise-dependencies 到達商業版 SOFABoot 的 pom 文件。
您也可以右鍵選擇 Go To > Implementation(s)。
在 sofaboot-enterprise-dependencies 的 pom 文件中搜索要替換的 JAR 包名稱,例如 fastjson。
如果其 version 處采用 placeholder 格式引用了 properties,可以參考本文方法,修改其版本。
如果想替換開源版 SOFABoot 或 Spring Boot 管理的 JAR,可以重復第 1 步,繼續向上尋找 sofaboot-dependencies 的 pom 和 spring-boot-dependencies 的 pom,尋找需要提供的 JAR 對應的版本控制 Key。