TIPS
本文基於Spring Cloud Greenwich SR3編寫,理論支持Spring Cloud Greenwich所有版本。
對於非Greenwich版本,請前往 https://github.com/alibaba/spring-cloud-alibaba/wiki/版本說明 查看Spring Cloud與Spring Cloud Alibaba的版本兼容性關係,自行升級到對應的兼容版本。例如:你用的是Spring Cloud Finchley,那麼應使用Spring Cloud Alibaba 2.0.0,以此類推。
最近,Spring Cloud Alibaba已經從Spring Cloud孵化器中孵化成功。孵化成功後的最新版本是2.1.0。這一節來詳細探討如何將Spring Cloud Alibaba從0.9.0升級到2.1.0。
從0.9.0開始,Maven的Group id發生了變化!
•0.9.0的Group id是 org.springframework.cloud•0.9.0以上的版本是 com.alibaba.cloud
這看起來還挺嚇人的,而且此前也引發了一些吐槽。其實這主要是由於Spring Cloud考慮簡化自己的Release Train(即:Spring Cloud自身的版本管理),於是修改了發佈政策:非Spring Cloud團隊維護的Spring Cloud的子項目,一律使用自己的GroupId即可,不再強制使用 org.springframework.cloud 。
TIPS
詳見:https://spring.io/blog/2019/07/24/simplifying-the-spring-cloud-release-train[1]

從功能上講,Spring Cloud Alibaba 2.1.0和0.9.0區別並不大,所以升級還是比較輕鬆的。下面列出升級的具體步驟:
一、升級依賴管理器
將
<dependency>
<groupid>org.springframework.cloud/<groupid>
<artifactid>spring-cloud-alibaba-dependencies/<artifactid> <version>0.9.0.RELEASE/<version> <type>pom/<type> <scope>import/<scope>/<dependency>
修改為:
<dependency>
<groupid>com.alibaba.cloud/<groupid>
<artifactid>spring-cloud-alibaba-dependencies/<artifactid>
<version>2.1.0.RELEASE/<version>
<type>pom/<type>
<scope>import/<scope>
/<dependency>
其實就是改個groupId以及version。
二、升級Starter
將Spring Cloud Alibaba所有相關的Starter依賴(即以 spring-cloud-starter-alibaba- 開頭的所有依賴),的groupId,全部更換成com.alibaba.cloud 。
例如:將:
<dependency>
<groupid>org.springframework.cloud/<groupid>
<artifactid>spring-cloud-starter-alibaba-nacos-discovery/<artifactid>
/<dependency>
修改為:
<dependency>
<groupid>com.alibaba.cloud/<groupid>
<artifactid>spring-cloud-starter-alibaba-nacos-discovery/<artifactid>
/<dependency>
三、升級Server軟件版本
由於Spring Cloud Alibaba使用了Nacos、Sentinel Dashboard、RocketMQ,所以還得升級這三款軟件的Server端。
TIPS
普及一個技巧:可根據客戶端版本,去下載相同版本/兼容版本的Server端。
舉個例子:
•通過分析,可以發現 spring-cloud-starter-alibaba-nacos-discovery 使用了Nacos Client 1.1.1,所以下載Nacos Server 1.1x 肯定是兼容的。
當然,其實在官方文檔 https://github.com/alibaba/spring-cloud-alibaba/wiki/版本說明
分別下載:
•Nacos Server 1.1.x
•Sentinel Dashboard 1.6.x
•RocketMQ 4.4.x(筆者經過測試,使用RocketMQ 4.5.1也是OK的)
四、修正編譯報錯
如果你使用了原Spring Cloud Alibaba的一些類,那麼升級後,很可能會報錯。這主要是因為,Spring Cloud Alibaba的包名結構也發生了變化。原先的包結構是 org.springframework.cloud.xxx ,升級後包名也改成了com.alibaba.cloud.xxx 。
重新導一下包一下就OK了。
閱讀更多 IT牧場 的文章