IDEA 2020+Maven创建Spring Boot项目完整配置指南与避坑手册
在 IDEA 2020 里配好 Maven再创建一个 Spring Boot 项目这套流程网上教程很多但不少教程还在用旧版本的界面截图照着做第一步就对不上。真正自己动手时版本差异、配置路径不同、网络导致依赖下载失败每一步都可能卡住。我帮人排查过不少这类问题发现痛点集中在三处IDEA 2020 创建 Spring Boot 项目的入口和别的版本不一样、Maven 明明配了但 IDEA 加载的还是默认仓库、依赖下载速度太慢导致项目一直编不过。这篇就按实际创建的顺序来写包括为什么这么配、在哪里点、遇到问题先查什么。适合刚接触 Java 后端、在 IDEA 2020 上折腾 Spring Boot 的读者也适合已经跑通但想弄清楚原理的开发者。1. 为什么是 IDEA 2020 Maven 这套组合1.1 IDEA 2020 在项目创建入口上的变化IDEA 2020 不算老也不算新但它的 New Project 窗口和之后的新版本差异不小。很多教程直接说“左侧点 Spring Initializr”可实际上你在 IDEA 2020 里新建项目时左侧列表能不能看到这个选项取决于你装的是旗舰版还是社区版。旗舰版通常会有直接的 Spring Initializr 入口社区版里则没有这就让很多跟着教程操作的人第一步就对不上界面。另一个容易被忽略的变化是从 2019 版本开始Spring Boot 项目向导默认是访问远程的 Spring Initializr 服务来在线生成项目而不是从本地模板生成。这是一个很关键的设计意味着创建过程强依赖网络。如果你的网络访问远程服务不稳定项目生成就会卡在中间某个进度看起来像 IDEA 卡死了其实就是请求没通。理解这一点之后遇到生成卡住就不会慌也知道该往哪个方向排查。1.2 Maven 在 Spring Boot 项目里扮演什么角色Maven 简单说就是一个构建工具加依赖管理器。Spring Boot 项目启动之后会依赖几十甚至上百个 jar 包这些 jar 如果手动下载、手动放进 classpath工程是没法维护的。Maven 用一个 pom.xml 文件声明项目需要哪些依赖启动编译时自动去远程仓库下载并在构建时统一管理版本。有人会问为什么不用 Gradle这个选择在 IDEA 2020 时代其实更多是生态考虑。Spring Boot 官方的示例和大多数企业存量项目都以 Maven 为主网上资料多遇到问题容易搜到配置文件相对直白。Gradle 构建速度在某些场景下更快但对刚接触 Spring Boot 的人来说Maven 的学习曲线更缓社区踩坑记录也更多。团队协作时Maven 的标准目录结构和生命周期约定更统一接手别人项目时不用先去猜构建逻辑。1.3 两种创建 Spring Boot 项目的入口怎么选IDEA 2020 中创建 Spring Boot 项目通常有两条路。第一种是在 IDEA 里新建项目走向导选项选择 Spring Initializr 后一步步填信息。第二种是直接用浏览器打开 Spring Initializr 的网页在线填好配置后下载 zip 压缩包再作为 Maven 项目导入 IDEA。我的建议是优先用 IDEA 内置向导因为它把“创建”和“导入”两个动作合在一起生成完成就能直接看到 Maven 项目结构和启动类。如果内置向导因为网络问题一直失败再用网页方式兜底。网页方式的优势是生成过程独立于 IDEA网络连接出问题时更容易定位劣势是多一步手动导入但导入方式也不复杂后面问题清单里我会详细展开。2. 环境准备与 Maven 关键配置2.1 JDK、Maven 版本怎么搭最稳IDEA 2020 发布时主流的 Spring Boot 是 2.xJDK 8 是最稳妥的选择。Spring Boot 2.x 的自动配置和编译参数默认基于 JDK 8 设计虽然 JDK 11 也能跑但新手不建议一上来就同时挑战新 JDK、新 Spring Boot 和新 IDE把变量控制在最小范围出了问题才好定位。JDK 安装完之后要确认两个环境变量JAVA_HOME 和 PATH。以 Windows 为例安装目录通常是JAVA_HOMEC:\Program Files\Java\jdk1.8.0_281 PATH%JAVA_HOME%\binMaven 我建议使用解压版而不是 IDEA 自带的 bundled Maven。IDEA 自带的 Maven 虽然开箱即用但它的 settings.xml 读取逻辑和自己装的版本不完全一样版本也可能落后于项目需求。解压版的路径完全可控配置行为更稳定。Maven 3.6.3 这个版本在 IDEA 2020 和 Spring Boot 2.x 组合下表现比较稳定3.8 之后对镜像和本地仓库的默认行为有调整默认配置反而容易出问题。2.2 把 Maven 配置到 IDEA 2020 的指定位置安装好 Maven 解压版后打开 IDEA 2020进入设置页面。Windows 下是 CtrlAltSMac 下是 Preferences。然后找到 Build, Execution, Deployment → Build Tools → Maven。这个页面里有几个关键配置项Maven home directory指向你解压的 Maven 目录选中目录后 IDEA 会识别出版本号。User settings file选择 Maven 目录下 conf/settings.xml。Local repository如果设置文件里已经配置了本地仓库路径这里会自动读取也可以手动覆盖。这里最容易踩的坑是很多人确认了命令行里 mvn -v 正常就觉得 Maven 配置好了结果 IDEA 里加载的还是默认路径依赖下载仍然走中央仓库、仍然慢。原因是 IDEA 有自己的 Maven 配置缓存修改环境变量不会自动同步到 IDEA。所以每次改完路径后建议在 Settings 页面里看一眼当前识别出的 Maven home 路径再点右下角的 Apply 和 OK必要时重启 IDEA。2.3 给依赖下载提速镜像与本地仓库优化Spring Boot 项目创建的瞬间就要下载大量依赖中央仓库在国外很多网络的下载速度很慢。我通常会在 settings.xml 里加一个 mirror 配置把 central 指向网络环境下延迟更低的镜像节点同时把本地仓库位置指到空间大的非系统盘目录。一个典型的配置片段长这样settings localRepositoryD:/maven-repository/localRepository mirrors mirror idcentral-mirror/id mirrorOfcentral/mirrorOf urlhttps://mirror.example.com/repository/maven-public//url /mirror /mirrors /settings注意这里的 URL 需要替换成你实际网络环境下可用的镜像地址不同时期可用性会变化我刻意不写具体域名避免误导之后照着配反而报错。选择镜像有两个判断标准一是延迟低二是同步完整度。有些镜像同步慢部分新版本的 jar 包会 404遇到这种情况宁可换回中央仓库也不要硬等。本地仓库不要放在 C 盘用户目录默认位置依赖积累到几个 G 是常态重装系统会全丢。我一般放到数据盘比如 D:/maven-repository目录名也不要用中文避免某些插件读取时编码出问题。3. 用 IDEA 2020 创建 Spring Boot 项目的完整实操流程3.1 新建项目的每一步该选什么启动 IDEA 2020关闭当前项目页面进入创建入口。选 Create New Project左侧菜单选择 Spring Initializr。如果你的界面里没有这个选项试试找 Spring Assistant 之类的名称或者直接用网页方式生成。Project SDK 选择 1.8这是和 Spring Boot 2.x 最匹配的版本。点击 Next 后进入项目坐标填写页面。Group 通常写成公司域名的反写个人学习可以写 com.exampleArtifact 是项目名例如 demo。下方有几个选项需要注意Type 选 Maven ProjectPackaging 选 JarLanguage 选 JavaJava Version 选 8。这里如果选错 Packaging后面生成的项目结构和启动方式会不一样容易让人困惑。依赖选择页面里第一次创建只需要勾选 Spring Web。这个依赖会引入内嵌 Tomcat、Spring MVC、Jackson 等组件让项目可以处理 HTTP 请求。其它依赖比如数据库驱动、Redis、消息队列建议等真正用到再加。第一版就把一堆组件全勾上等于同时引入一堆可能冲突的配置出了问题很难判断是环境问题还是代码问题。点 Finish 之后 IDEA 开始初始化右侧下方会出现下载进度条等右下角 Maven 导入完成项目就可以动了。3.2 生成后的项目结构哪些文件要重点关注项目生成后展开目录可以看到几个核心区域src/main/java存放 Java 源码里面有一个以 Application 结尾的类这是启动类。src/main/resources存放配置文件默认有 application.properties。src/test/java测试代码目录默认带一个空的上下文加载测试。启动类上标注了 SpringBootApplication这个注解里面整合了自动配置、组件扫描等功能。很多人刚创建完项目还没写任何代码就急着改配置或者加依赖。我的建议是先跑一次空项目确认基础链路是通的再动其它内容。如果启动类右键没有 Run 选项说明 IDEA 还没有把它识别成可运行项目先检查 Maven 是否导入完成、Project SDK 是否匹配不要急着改代码。3.3 pom.xml 里的依赖怎么理解怎么加新的pom.xml 是 Maven 项目的核心。第一次看到这个文件重点看三块内容。第一块是 parent 标签指向 spring-boot-starter-parent。这个父工程统一管理了大量常用依赖的版本所以你在 dependencies 里写 Spring Boot 相关依赖时通常不需要手写版本号父工程已经帮你锁定了。第二块是 dependencies 里的 spring-boot-starter-web它包含了运行 Web 服务所需的完整组件。第三块是 build 里的 spring-boot-maven-plugin这是启动 Spring Boot 应用和打包可执行 jar 的关键。加新依赖时建议去 Maven 仓库搜坐标复制 dependency 标签粘贴到 pom.xml 里。IDEA 里在 dependencies 标签内按 AltInsert 也可以选择 Dependency 搜索添加。不要手动随便写版本号除非你确定父工程没有管理这个依赖。版本冲突往往比代码错误更难看两个 jar 包各自依赖了不同版本的同一个库启动时各种类找不到的报错排查起来非常耗时。3.4 写一个能访问的接口并启动验证在启动类同级的包下新建一个 controller 包创建一个控制器类。比如package com.example.demo.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; RestController public class HelloController { GetMapping(/hello) public String hello() { return Hello Spring Boot; } }回到启动类点 main 方法左侧的绿色箭头运行。看到控制台输出 Started Application并且包含 Tomcat started on port(s): 8080说明启动成功。浏览器访问 localhost:8080/hello页面会显示 Hello Spring Boot。这一步有个容易忽略的细节控制器所在的包必须放在启动类所在包的下级或同包。如果放到包外面Spring Boot 默认组件扫描扫不到访问接口会一直 404。另外如果想避开端口冲突可以在 application.properties 里加一行 server.port8081重新运行后接口地址就变了。4. 运行期最常见的坑以及对应的排查顺序4.1 项目生成过程卡住或超时的处理创建项目时卡在生成进度条是 IDEA 2020 里最常见的启动问题原因基本都是内置向导访问远程 Initializr 服务失败。这时候不一定要反复重试 IDEA 向导可以直接用网页版 Spring Initializr把各项配置重新选一遍下载 zip 包本地解压然后在 IDEA 里用 Open 打开这个目录选择作为 Maven 项目导入。这个方案绕过了 IDEA 自身的网络请求但又保留了向导生成的标准项目结构和内置向导生成的结果基本一致。之后 Maven 导入过程如果还慢那就是依赖下载的问题按下一节排查。如果网页也打不开先检查本机代理或安全软件是否拦截了相关请求这部分属于个人环境问题没有通用解法只能逐个排查。4.2 依赖下载慢甚至失败的排查顺序首次导入 Spring Boot 项目可能要下载几百 MB 的依赖进度条如果长时间不动先确认 Settings 里的 User settings file 是否指向了配置镜像的文件。很多人改完 settings.xml 保存后IDEA 还缓存着旧配置一定要回到 Maven 设置页面确认路径。一个常见报错是 Non-resolvable parent POM意思就是项目依赖的父工程 pOm 下载不下来。排查顺序按这套走先在命令行执行 mvn -v 确认 Maven 可用再执行 mvn clean compile 看看依赖能否正常下载。如果命令行能下IDEA 不能问题在 IDEA 的 Maven 配置加载如果命令行也下不动问题在 settings.xml 或网络。mirrorOf 的值也有讲究。写成 * 表示所有仓库都走镜像一旦镜像同步不完整后续新增依赖容易 404。写成 central 只会拦截中央仓库粒度更细我一般用这种方式。改完 settings.xml 后在 IDEA 右侧 Maven 面板点刷新按钮或者右键 pom.xml 选 Maven → Reimport。下面是几个高频问题的速查表现象常见原因处理办法创建项目卡进度向导访问远程服务失败用网页版 Initializr 生成后导入依赖一直下载中走的中央仓库或镜像不对配置镜像并确认 settings.xml 路径Non-resolvable parent POM父工程 pom 没下下来检查网络、镜像、IDEA 缓存启动类右键没有 RunMaven 还没导入完成等待导入或手动 Reimport接口访问 404类包路径不在启动类扫描范围调整 controller 包路径端口被占用8080 已有服务在配置里改 server.port4.3 启动失败端口、版本、导入异常启动类运行后立刻退出控制台末尾提示 Port 8080 was already in use这是端口被占用。要么找到占用端口的进程关掉要么在 application.properties 里把端口换掉。开发阶段我习惯直接换端口不额外去杀系统进程。另一个容易埋雷的问题藏在 Java 版本不匹配里。项目创建时选的是 JDK 8但电脑上默认的 JDK 是 11 或更高构建时可能出现 release version 不支持之类的错误。处理方式是把 Project Structure 里的 Project SDK 和 Maven runner 的 JDK 指到同一个版本。进入 Settings → Build, Execution, Deployment → Build Tools → Maven → Runner把 JRE 选项选成项目对应的 JDK。还有一种情况是 pom.xml 标签顺序写错控制台出现 cvc-elt.1.a 这类 XML 校验错误。Maven 的 pom.xml 对标签顺序有严格规定从网页复制的依赖片段一般没问题但手动调整时容易打乱顺序。遇到这种情况右键 pom.xml 选 Maven → Reimport或者直接从 start 页面生成的新项目里复制 pom 内容。4.4 一些能直接提高成功率的实操心得整套流程走下来最重要的建议是第一次创建时不要追求界面好看、依赖齐全能把一个空项目跑起来就是胜利。配置环境的难点不在某个操作本身而在多个工具之间的互相配合。把“配置环境”和“学 Spring Boot”混在一起学遇到问题时很难定位到底哪一步错了。我现在帮人配环境还是照着先确认 JDK、再配 Maven、最后建项目的顺序来。IDEA 2020 这套组合我用了很久只要能稳定跑起来日常开发并不会觉得缺什么。最后分享一个小习惯把本地仓库路径、JDK 版本、Maven 目录这些信息记在一个备忘里下次换电脑或重装系统时直接照抄可以省掉大量来回排查的时间。希望这篇梳理能帮你少踩几个坑。

相关新闻

Virtuoso 使用技巧:从版图编辑到后仿收敛的实战避坑指南

Virtuoso 使用技巧:从版图编辑到后仿收敛的实战避坑指南

简介:这份PPT面向模拟、混合信号、射频及定制数字电路设计的学习者与工程师,系统梳理Cadence Virtuoso定制设计平台的使用技巧,帮助初学者快速上手、进阶用户查漏补缺。内容覆盖Virtuoso简介与正确进入方式、电路图绘制、基于specture的仿真分…

2026/10/14 4:38:55 阅读更多 →
正则化、归一化、标准化:三者的区别与实战指南

正则化、归一化、标准化:三者的区别与实战指南

搞机器学习和深度学习的同学,应该都遇到过这样的场面:模型训练loss降不下来,或者验证集和训练集准确率像两条分开的路越走越远。群里第一反应永远是“调参”,然后马上有人提议“加个正则化试试”,也有人建议“把数据归…

2026/10/14 4:38:55 阅读更多 →
MATLAB AI算法调参与避坑实战指南

MATLAB AI算法调参与避坑实战指南

简介:本资源是一份面向MATLAB初学者与人工智能入门实践者的系统性学习文档,聚焦AI算法原理解析与工程实现路径。内容覆盖基础统计建模(回归/聚类/分类)、经典机器学习(SVM、决策树)及主流深度学习模型&…

2026/10/14 4:38:55 阅读更多 →

最新新闻

电商AI视觉生产流水线:12个可编排图像生成Skill开源实践

电商AI视觉生产流水线:12个可编排图像生成Skill开源实践

1. 这不是又一个“AI画图工具”,而是电商视觉生产流水线的底层能力拆解你有没有遇到过这样的场景:运营同事凌晨两点发来消息,“明天大促主图要换,三套风格,带卖点文案,尺寸必须是800800和1200628双规格&…

2026/10/14 5:25:13 阅读更多 →
JavaScript正则方法全解析:从exec到replaceAll的实战指南

JavaScript正则方法全解析:从exec到replaceAll的实战指南

写正则的人最怕的不是正则写不出来,而是同一个需求,每个方法看起来都“差不多能用”,但真上线之后,Bug一个接一个。我见过好几次这样的情况:有人用match想拿捕获组,结果返回了一堆字符串;有人在…

2026/10/14 5:25:13 阅读更多 →
Apache Mesos 0.28.0 特性深度解析:net_cls 网络隔离、统一容器化与 v1 Executor HTTP API

Apache Mesos 0.28.0 特性深度解析:net_cls 网络隔离、统一容器化与 v1 Executor HTTP API

云原生 【免费下载链接】mesos Apache Mesos 项目地址: https://gitcode.com/gh_mirrors/mesos2/mesos 点击查看 免费下载 Apache Mesos 0.28.0 是 Mesos 发展历程中承上启下的一个重要版本:它在 Linux cgroups 网络隔离、标量资源精度、动态预留资源元…

2026/10/14 5:25:13 阅读更多 →
人体供暖系统:科学激活产热机制抵御寒冬

人体供暖系统:科学激活产热机制抵御寒冬

1. 寒冬里的主动发热之道最近几年冬天越来越难熬,特别是南方没有集中供暖的地区。作为一个在杭州生活了十年的北方人,我深刻体会到南方湿冷的威力——那种冷是往骨头缝里钻的。开空调太干燥,电热毯又只能局部取暖,于是我开始研究如…

2026/10/14 5:25:13 阅读更多 →
UE5 C++单播代理实战:DECLARE_DELEGATE与TDelegate全面解析

UE5 C++单播代理实战:DECLARE_DELEGATE与TDelegate全面解析

做游戏逻辑的时候,最常干的一件事就是把“某个行为”传递给“另一个系统”。按键按下的那一刻要通知谁,异步加载完关卡要提醒谁,血量掉到某个阈值要唤起谁——这些在UE5 C里最直接的落地方案就是代理(Delegate)。其中单…

2026/10/14 5:25:13 阅读更多 →
VC++ FTP服务器与客户端完整源码解析:从协议到断点续传实战

VC++ FTP服务器与客户端完整源码解析:从协议到断点续传实战

简介:一套面向VC/MFC与网络通信初学者的FTP客户端与服务器完整示例工程,基于VC6.0调试通过。工程同时提供控制台版本的FTP服务器和MFC界面客户端,源码头文件结构清晰,关键功能均以类接口形式开放,便于在此基础上扩展成…

2026/10/14 5:24:12 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →