SpringCloudAlibaba遇到的坑
1 Maven配置问题
首先检查一下自己的maven版本,maven版本过低可能会存在版本匹配找不到对应的版本库问题。建议升级3.0+以上的。
其次是镜像,将mirrorOf标签内替换为central。说明:修改文件中<mirror>
标签中<mirrorOf>
标签,这个标签的值可以是*
,central
,Maven
。
*
的意思是只在此镜像地址进行下载,如果不能正常下载,可以修改·<mirrorOf>
标签为central
或者Maven
。
完整如下:阿里云的Maven镜像已经做了https升级和仓库细化
<mirrors> <mirror> <id>nexus-aliyun</id> <mirrorOf>Maven</mirrorOf> <name>Nexus aliyun</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> </mirrors>
由于使用了https,存在着SSL证书验证的问题。所以,在修改完maven的settings文件之后,还需要在IDEA的File->Setting中进行配置,设置忽略SSL证书的验证
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true
自此 maven问题搞定。
2 版本号问题
在导入依赖时,我在之前用过的项目的依赖复制过来,总是提示我not found
没办法,只有去找对应的版本号
spring-cloud-dependencies在Maven中央仓库查找:https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies
spring-cloud-alibaba-dependencies去github找:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
完整如下:
<dependencies> <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR3</version> <type>pom</type> <scope>runtime</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.5.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies>
3 需要去下载对应的模块
如nacos,sentinel等等
ctrl+点击spring-cloud-alibaba-dependencies进入配置页查看对应的版本,如这里的nacos client就需要1.4.1
然后就去下载:https://github.com/alibaba/nacos.下载解压并打开startup.cmd即可。
4 nacos启动失败
用文本编辑工具打开startup.cmd
nacos默认集群启动,未配置的情况下需修改为单机启动
set MODE=“cluster”
修改为
set MODE=“standalone”
5子模块问题
1 四大注意事项
父pom需要添加<packaging>pom</packaging>。
父pom需要用<modules><module>子module名</module></modules>注明子module有哪些。
父pom声明依赖时<dependencies>外要嵌套<dependencyManagement>才能被子pom继承到,我就是忘了这点。
子pom需要通过<parent></parent>指定父项目,声明依赖时就默认会用父pom中的版本了。