在此记录下,自己建springcloud项目是遇到的一些问题
1、创建模块后,pom文件导包错误
描述:maven-Denpendencies中,包的版本为unknown
原因:未定义包的版本
如果是从别处局部粘贴的pom.xml,注意version是否有${}
占位符
有占位符的需要检查是否在properties中有定义对应的版本,如下图
<properties>
<org.springframework.boot>2.6.3</org.springframework.boot>
</properties>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${org.springframework.boot}</version>
</dependency>
或者是不存在version标签,那对应的pom文件可能有依赖父pom,在父pom中已经定义了对应依赖的版本
若定义了版本依然有unknown
可以去maven仓库中把对应包的unknown版本删除,再重新导包
2、 创建模块时,依赖父项目,却无法执行mvn操作
报错信息:Non-resolvable parent POM
原因:找不到对应的父项目
先确定父项目中pom.xml中<packaging>
是否为pom
其次确定子项目pom.xml中是否有relativepath
标签
<relativePath></relativePath>
该标签用于查找父项目的pom.xml,首先去父目录中找pom.xml文件,如果有找到,会看对应的groupId
和artifactId
的坐标是否一致;如果没有,就会去仓库中找。若找不到,则会报错
若maven中项目,有下划红线must be "pom" but is "jar"
也是因为父项目pom.xml中packaging
未定义为pom
补充packaging
标签
pom ---------> 父类型都为pom类型
jar ---------> 内部调用或者是作服务使用
war ---------> 需要部署的项目
一般来说定义为pom的项目,没有代码需要编译,只是为了聚合工程和传递依赖用
3、 启模块时,报错
报错信息:Error creating bean with name 'requestMappingHandlerAdapter'
原因:多半是导入的依赖重复且版本不同,导致了冲突,冲突的包则无法导入
用idea的terminal或者是到对应模块的目录下打开cmd命令窗口,执行mvn dependency:tree -Dverbose>log/tree.txt
(先确定对应目录下有log文件夹)该命令的作用是将模块内的dependency树打印到log文件夹下的tree.txt中,执行完成之后打开tree.txt文件
后缀带有 omitted for conflict with XXX
说明该jar包与XXX版本冲突,jar包不会被导入
手动解决冲突,确定版本即可
更多情况是 该模块中的pom文件,每一个依赖都去设置了版本,导致不同依赖中相同的子包有不同的版本号,导致了冲突;解决办法:可以依赖相同的父依赖