VS Code中Spring Boot项目Maven构建无法完成排查请求
我在VS Code中打开Spring Boot应用时,依赖构建进程始终无法完成,运行数小时毫无进展,终端显示如下内容:
9f5bcec9 Importing Maven project(s): Importing Maven project(s) - Refreshing '/jdt.ls-java-project'. [337/1000]
c9f76cf2 Refreshing Maven model: [0/-1]
fc8986d3 Repository registry initialization [Done]
怀疑是pom.xml文件存在问题导致依赖解析异常,以下是对pom.xml的问题排查和解决方法:
一、pom.xml中的核心问题
1. Java版本冲突
properties中配置的java.version为17,但maven-compiler-plugin指定的source和target版本是1.8,版本不匹配会导致依赖解析逻辑混乱,拖慢甚至卡住构建进程。
2. 冗余/冲突依赖
javax.servlet-api:spring-boot-starter-web已经内置了适配的servlet-api依赖,手动添加会引发依赖版本冲突。maven-core:这是Maven自身的核心组件,普通Spring Boot项目无需引入,冗余依赖会干扰依赖树的正常解析。
3. Protobuf版本不统一
protobuf-java版本为3.19.2,而protobuf-java-util版本是3.21.2,版本不一致会导致类兼容性问题,影响依赖解析效率。
4. 缺失核心构建插件
spring-boot-maven-plugin被注释掉,这是Spring Boot项目构建的核心插件,缺失会导致Maven无法正确识别项目结构,阻碍依赖导入流程。
5. 过时的注解API依赖
标注为Java 9+所需的org.apache.tomcat:annotations-api:6.0.53版本过低,与Java 17不兼容,会引发依赖解析异常。
二、具体解决步骤
1. 统一Java版本配置
修改maven-compiler-plugin的source和target版本,与properties中的Java版本保持一致:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>17</source> <target>17</target> <encoding>UTF-8</encoding> </configuration> </plugin>
2. 移除冗余依赖
删除以下依赖节点:
javax.servlet:javax.servlet-apiorg.apache.maven:maven-core
3. 统一Protobuf版本
将protobuf-java和protobuf-java-util版本统一,比如都升级到3.21.2:
<dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>3.21.2</version> </dependency> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java-util</artifactId> <version>3.21.2</version> </dependency>
4. 恢复Spring Boot构建插件
取消spring-boot-maven-plugin的注释,确保项目能被正确识别为Spring Boot项目:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin>
5. 替换/移除过时注解API
删除org.apache.tomcat:annotations-api:6.0.53依赖,Spring Boot 2.7.x已自带适配Java 17的注解API,无需手动引入。
6. VS Code端清理与重置
- 关闭VS Code,删除项目下的
.vscode、target文件夹,以及本地Maven仓库中该项目的缓存目录(如~/.m2/repository/com/thinhda/spring/grpc/core) - 重新打开项目,在终端执行
mvn clean install -U强制更新依赖 - 打开VS Code命令面板(Ctrl+Shift+P),执行
Maven: Reload Projects重新加载项目
内容的提问来源于stack exchange,提问作者Julian Castro

