遇到的问题

搭建SpringCloud项目的时候,不清楚怎么导入SpringBoot和SpringCloud依赖以及他们之间的版本关系。昨日搭SpringCloud的时候,报了一个下午的依赖冲突。今天解决了,特此记录一下。

由于SpringCloud是依赖于SpringBoot的,因此,SpringCloud和SpringBoot有着严格的对应关系。如:

springcloud依赖springboot版本在哪里 springboot引入springcloud依赖_spring boot


以上是SpringCloud和SpringBoot版本的大致版本关系。详细的可以去找官网或者参考一下这篇文章,也记录有i详细的依赖关系:SpringBoot和SpringCloud的依赖关系 那么,进入正题:

之前我不清楚SpringBoot是怎么导入的,就直接在子项目的pom中,导入SpringBoot相关的依赖,并没有在父项目的pom中,对SpringBoot的版本进行统一的管理,于是,出现了各种的依赖冲突,苦不堪言,解决一个又来一个没完没了。我看了博客也看了视频,很多都是在父项目中维护SpringCloud和SpringBoot的依赖对应关系,写在< dependencyManagement>里面进行统一管理。如下:

springcloud依赖springboot版本在哪里 springboot引入springcloud依赖_spring boot_02


那么,就有一个问题:< dependencyManagement>管理的依赖并不会直接给到子项目,必须在子项目的pom中声明相关依赖,然后才可以,比如我上图这个版本的springboot依赖,在子项目引用似乎出现了管理不了的问题:如下:

springcloud依赖springboot版本在哪里 springboot引入springcloud依赖_Cloud_03


正常情况应该是这样的:

springcloud依赖springboot版本在哪里 springboot引入springcloud依赖_spring_04


总之,SpringCloud依赖SpringBoot,当调用SpringCloud的一些组件的时候,必然会用到SpringBoot一些相关的Jar,但是我不清楚具体要哪些(PS:我很清楚SpringCloud要引入什么依赖,毕竟很少,但是我不太清楚SpringBoot对应着需要引入什么,就很烦。。),< dependencyManagement>只负责声明,不负责引入,需要我们在子pom中引入,漏了或者版本搞错了,必然报错,况且,从这里发现< dependencyManagement>似乎没管理SpringBoot,那么SpringBoot的依赖该怎么去管理呢?修改一下,如:

springcloud依赖springboot版本在哪里 springboot引入springcloud依赖_Cloud_05

子Pom不用更改,父pom改成上图这样,用去管理SpringBoot的依赖,与中的SpringCloud依赖形成对应关系。这样的话,两者版本都得到了管理。依赖冲突似乎就没有了。

总结:
以后我就在父pom中,用< parent>管理springboot的依赖,用< dependencyManagement>管理SpringCloud的依赖,至于两者依赖对应关系,文章开头已经提到。子pom引入需要的依赖即可,反正依赖已经管理好了,随便造。。

新的问题:为什么在SpringBoot的依赖写在里面,子pom里面就没有出现那个倒数第一张图里面的那个蓝色标志呢?我点进springboot-dependencies里面看了看,明明就有spring-boot-starter-web这个依赖,但就是没有出现这个标志,why? 有那位大佬可以清楚吗?请不吝赐教。感谢。