在使用商业版 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。