Maven工程引用依赖包出现can not resovel xxx,com.spring.framework.xxx :unkown xxx的解决办法
问题描述
今天在使用maven compiler plugin编译Spring Boot工程的时候,工程错误出现:
can not resovel xxx,com.spring.framework.xxx :unkown xxx
原因分析
can not resovel xxx,那就是没办法找到这个符号或者函数,言下之意就是:依赖的东西或者jar不存在。但通过对比后发现,并不是所有的
解决办法
在依赖的配置中,需要给依赖的jar指定版本号。
比如:
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
需要指定版本号,正确的示例如下:
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
延伸知识点
那么为什么有的工程需要写版本号,有的却不需要呢?
原因是:如果在父级或者父级的父级pom.xml添加了依赖,且依赖已经声明了版本就不需要在子module中重新声明;另外如果在父类的pom配置中证明声明了DepencyManagement
,则也不需要在module中再声明version。
有一种情况例外:就是子module中的版本可能和父类的不一样,这个时候需要在子module中独自声明版本。
示例如下:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
在父节点的pom.xml 文件中配置:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/></parent>
即可省去在dependencies中配置仔细依赖库的版本号。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。