使用VSCode运行Java Maven项目遭遇依赖拉取超时及POM配置错误求助
别担心,第一次用VSCode跑Maven项目遇到这些问题太正常了,我们一步步拆解解决:
第一步:先修复pom.xml里的重复定义问题
你执行mvn dependency:purge-local-repository时触发的错误,根源是pom里有两处重复声明,先把这些语法问题搞定,后续命令才能正常运行:
1. 移除重复的依赖声明
错误提示里的duplicate declaration of version 3.1.0,是因为你的dependencyManagement块里重复写了com.aliyun.oss:aliyun-sdk-oss:
- 一处是固定版本
<version>3.1.0</version>(大概在pom第100行左右) - 另一处是用变量
<version>${aliyun-sdk-oss.version}</version>(第169行)
删掉其中一处即可,建议保留用变量的那条,这样能保持版本统一管理。
2. 修复重复的模块定义
错误提示'modules.module[2]' specifies duplicate child module service_oss,这个问题出在service子模块的pom.xml里(路径是D:\code\atguigu\gulixueyuan\guli_parent\service\pom.xml)。打开这个文件,找到<modules>节点,你会发现重复写了<module>service_oss</module>,删掉其中一个重复条目就行。
第二步:解决Maven依赖缓存的超时问题
之前拉取spring-boot-starter-parent:2.2.1.RELEASE时连接超时,Maven会把这次失败记录缓存下来,默认不会主动重试,我们需要强制刷新缓存:
- 先确保你的网络正常,阿里云镜像本身是可访问的,如果网络不稳定,也可以考虑切换到国内其他Maven镜像(比如华为云、腾讯云的),不过先试试强制刷新:
- 在VSCode终端里进入项目根目录(
guli_parent所在文件夹),执行命令:
mvn clean install -U
这里的-U参数是强制Maven更新快照依赖,同时会重新尝试拉取之前缓存失败的构件。
如果还是不行,你可以手动删除本地Maven仓库的缓存文件夹:
- 找到你的Maven本地仓库路径(默认是
C:\Users\你的用户名\.m2\repository) - 定位到
org\springframework\boot\spring-boot-starter-parent\2.2.1.RELEASE文件夹,直接删除 - 再执行
mvn clean install,Maven会重新从镜像拉取这个依赖。
第三步:检查VSCode的Maven基础配置
第一次用VSCode跑Maven项目,还要确认下基础配置是否正确:
- 打开VSCode设置(快捷键
Ctrl+,),搜索maven.executable.path,确保路径指向你本地安装的Maven的mvn.exe(默认在apache-maven-x.x.x\bin目录下) - 检查Maven的
settings.xml文件,确认阿里云镜像配置正确,配置示例如下:
<mirrors> <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> </mirrors>
如果你的settings.xml里没有这个配置,加上它能大幅加快依赖拉取速度。
按上面的步骤一步步来,应该就能顺利解决这些问题了。
内容的提问来源于stack exchange,提问作者aftermath

