☰
IDEA 2020配置Maven创建Spring Boot项目:从环境搭建到排错
2026/10/14 22:06:29 网站建设 项目流程

我最初接触 IDEA 2020 时,被"配置 Maven 创建 Spring Boot 项目"这一套流程折磨得不轻:打开的工程文件全屏红叉、依赖下载卡住不动、明明命令行能跑通的项目进了 IDEA 就报"程序包不存在"。后来把整个环境从零配了一遍,又反复推倒重来几次,才算把 IDEA 2020、Maven、Spring Boot 三者之间的协作逻辑搞清楚。这篇就按我当时完整的操作顺序来写,从版本选型、本地 Maven 安装、IDEA 绑定,到新建项目、首次构建,再到最后逐个排查各种玄学报错,希望对卡在这一步的读者有点实际帮助。

这套内容更适合还在用 IDEA 2020、又不想立刻升级开发环境的朋友。它不涉及复杂架构,只解决一件事:让 IDEA 2020 稳定地创建、构建、运行一个 Spring Boot 项目。读完你至少能理解为什么有些人创建项目那么顺利,而你的电脑总是报错。

1. 版本组合先定好:JDK、Maven、Spring Boot 之间互相有硬性要求

很多人的问题不是操作错了,而是版本组合从一开始就选得不匹配。IDEA 2020 毕竟是那一代的产品,它对后续新版本 JDK 和新版本 Maven 的兼容性远没有新版本 IDEA 那么完善。我建议直接采用下面这套非常稳定的组合,虽然保守,但对新手来说最省心:

组件推荐版本说明
IDEA2020.2 / 2020.3两者界面和配置路径基本一致,以下操作都适用
JDK1.8(8u202 或更新)最稳妥,兼容性最好,也是 Spring Boot 2.x 的主力运行版本
Maven3.6.3稳定、文档量大,网上遇到问题最容易搜到答案
Spring Boot2.4.x / 2.5.x适配 JDK 1.8,创建项目时直接选 Spring Boot 2 系列

1.1 为什么不要选太新的 JDK

JDK 11、17 甚至更高版本当然能跑 Spring Boot,但 IDEA 2020 对它们只是"勉强认识"。具体表现是:编译级别识别异常、某些注解处理器的行为不一致、还有莫名的"无效源发行版"报错。JDK 1.8 是当时绝对的主流版本,IDEA 2020 对它的支持做得很完善——快捷键、代码提示、调试器、热部署都舒服。

另外要注意:如果你在创建 Spring Boot 项目时看到默认勾选的是 Spring Boot 3.x,一定要改回 2.x。Spring Boot 3 是基于 JDK 17 的,配上 IDEA 2020 和 JDK 1.8,从创建那一天起就注定跑不起来。这也是"为什么我创建完项目直接报错"最常见的原因之一。

1.2 为什么 Maven 要选 3.6.3

Maven 3.8 以后对镜像仓库的 HTTPS 访问收紧了不少,如果你用的是公司内网仓库或者某些私服,会遇到不少连接层的问题。3.6.3 是 3.x 系列里非常成熟的一个版本,repo 配置宽松,能省掉很多网络层怪问题。

Maven 本身只是一个"包管理 + 构建"工具,它依赖settings.xml和pom.xml来工作。你的电脑上只需要有 JDK 和 Maven,IDEA 负责调用它们来完成编译、测试、打包等操作。理解这一点对后面排查问题特别重要:当你看到"程序包不存在"这一类报错时,大概率不是代码写错,而是 Maven 没能把依赖下载到本地,或者 IDEA 没有找到本地仓库。

2. 本地 Maven 安装与国内镜像配置:先把失败率降下来

Spring Boot 项目依赖数量非常大,起步阶段就要下载几十个 jar 包。如果你每次都从官方中央仓库直接拉取,轻则几百 KB 每秒的速度,重则连接超时导致依赖下载一半就失败。配置国内镜像不是可选项,而是起步项目的刚需。

2.1 安装 Maven 的完整操作

  1. 到 Maven 官网下载二进制压缩包,文件名类似apache-maven-3.6.3-bin.zip,不要下载src版本。
  2. 解压到一个路径里,注意整个路径不要包含空格和中文,我一般放在D:\dev\apache-maven-3.6.3。
  3. 配置环境变量:
    • 新建系统变量MAVEN_HOME,值为解压路径。
    • 在Path变量末尾追加%MAVEN_HOME%\bin。
  4. 打开命令行,输入mvn -v,如果能输出 Maven 版本和 Java 版本信息,说明安装成功。

注意一点:如果你没有配置JAVA_HOME,Maven 是跑不起来的。mvn -v输出内容里会有Java version一项,如果显示Java version: not defined或者干脆报错找不到 Java,那就先去设置JAVA_HOME指向 JDK 1.8 的安装目录。

2.2 settings.xml 里两个关键配置:本地仓库和镜像

Maven 的全局配置文件在安装目录下的conf/settings.xml。个人建议不要直接改这个文件,而是把自己那份配置放到用户目录下的.m2文件夹里,这样后续升级 Maven 或换电脑都不影响。操作如下:

  1. 手动创建一个目录:C:\Users\你的用户名\.m2。
  2. 把conf/settings.xml复制一份到.m2目录下。
  3. 修改.m2\settings.xml,做两件事。

第一件事,配置本地仓库目录,也就是所有依赖 jar 包在本机的存储位置:

<localRepository>D:\dev\maven-repo</localRepository>

这个目录可以随意指定,但同样别带空格和中文。为什么要自定义?默认的.m2/repository藏在用户目录下,一旦系统盘空间紧张或者你重装系统,几 GB 的依赖仓库就没了,重新下载很痛苦。放到独立的D:\dev下,备份和迁移都方便。

第二件事,配置镜像源:

<mirrors> <mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <name>aliyun central mirror</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> </mirrors>

mirrorOf写成central表示只对中央仓库生效,其他自定义仓库不受影响。配置完成后,保存文件,再跑一次mvn help:system或者直接创建一个测试项目,观察依赖是否从镜像地址下载。

2.3 验证镜像是否生效

很多人配置完镜像发现下载速度没变化,那是因为 IDEA 里用的根本不是这份 settings.xml。IDEA 是一个独立的软件,它不会自动读取你系统环境变量里的 Maven 配置,它只读自己在设置面板里指定的 settings.xml 路径。这就是为什么哪怕命令行 Maven 一切正常,IDEA 里依然慢吞吞甚至直接下载失败。接下来就需要把 IDEA 和本地 Maven 对接起来。

3. 在 IDEA 2020 里绑定自装 Maven:三个设置缺一不可

IDEA 自带了一个 Maven,但我不建议直接用。原因很简单:你很难控制它的版本和配置文件,出了问题也不清楚它读到的是哪一份 settings.xml。更合理的做法是让 IDEA 指向你自己安装、自己配置好的 Maven。

打开 IDEA,进入File -> Settings -> Build, Execution, Deployment -> Build Tools -> Maven,依次确认以下三个位置。

3.1 Maven home directory

这里点击右侧的文件夹图标,选择你解压出来的 Maven 根目录,例如D:\dev\apache-maven-3.6.3。选完后下方会自动显示版本号,如果你看到Maven home directory显示的是 IDEA 自带的路径,那就说明还没改过来。

3.2 User settings file 和 Local repository

在同一个面板下方,有User settings file一栏。默认是<IDEA 自带路径>,需要勾选右侧的Override,然后手动选择C:\Users\你的用户名\.m2\settings.xml。

选完这份文件后,下面的Local repository会自动变成 settings.xml 里<localRepository>指定的路径。如果没有自动变,就手动检查一下。

这个步骤是整个配置过程里最核心的一步。IDEA 不会因为你在环境变量里配了MAVEN_HOME就自动知道该用哪份 settings,它只会老老实实地读这个面板里指定的路径。很多"为什么我明明改了 settings.xml 还是慢"的问题,十有八九是这里没改。

3.3 Runner 和 Importing 里的 JDK 设置

回到Build Tools菜单下,还有两个容易被忽略的地方:

  • Maven -> Importing面板里的JDK for importer,选成 JDK 1.8。
  • Maven -> Runner面板里的JRE,选成 JDK 1.8。

这两个地方如果不改,导入项目时会用 IDEA 默认的 JDK,和你的项目编译级别不一致,就会出现"IDEA 认为编译能过,但实际构建失败"的诡异情况。

配置完成后,点击右下角Apply,再点OK。如果之前已经打开了项目,建议执行一次File -> Invalidate Caches and Restart,把缓存清掉再重开。这一步不是必需的,但在你多次改动配置后确实能解决一些界面上"看起来没生效"的问题。

4. 创建 Spring Boot 项目的两条路径:内置初始化和官网生成

IDEA 2020 创建 Spring Boot 项目有两个入口,我用一种更通俗的方式来区分:一条是"在 IDEA 里一步创建",另一条是"去网页上生成再导入"。两条路我都走过,谈不上哪个绝对更好,但各有各的坑。

4.1 路径一:用 IDEA 内置的 Spring Initializr 创建

操作路径是File -> New -> Project -> Spring Initializr。在界面中选择你的 SDK(JDK 1.8),然后在Choose Spring Boot Version下拉框里选择 2.4.x 或 2.5.x。如果列表里默认是 3.x,记得改掉。

接下来是选择依赖,新手我建议先只勾选一个Spring Web,不要一上来就加 MyBatis、Redis、安全框架等一堆东西。依赖越多,下载量越大,出错的概率也越高。你完全可以让第一个项目只依赖spring-boot-starter-web,验证环境通了,再往里面加其他组件。

这里有一个非常常见的坑:点完Finish之后,IDEA 会开始创建项目并下载依赖,此时右下角会有进度条。如果你等了很久进度条一直不动,大概率是网络问题。解决方式很简单,回到上一节说的 Maven 配置,确认User settings file确实指向你配置了国内镜像的那份 settings.xml。如果确认无误但还是卡住,就关掉项目,重新打开一次。

4.2 路径二:从网页生成项目再导入

在网站上看不到项目创建页面的时候,可以用网页版的 Spring Initializr 生成一个压缩包。选择项目类型为 Maven、语言为 Java、Spring Boot 版本为 2.5.x,Group 和 Artifact 根据自己喜好填,然后点击生成 ZIP,下载后解压。

导入 IDEA 的方式是:File -> New -> Project from Existing Sources,然后选中解压出来的目录。IDEA 会识别到pom.xml,弹出导入窗口时选择Import as Maven Project。

走这条路的好处是网页端生成项目通常比较干净,不会夹带 IDEA 2020 那套旧版初始化的历史包袱。坏处是如果你下载的 Spring Boot 版本太新(比如它现在默认推 3.x),那很可能与 JDK 1.8 冲突。所以选版本的时候一定要手动切到 2.x 系列。

4.3 创建之后的关键检查点

项目创建完,打开右侧的 Maven 面板(一般在窗口右侧竖排),展开Lifecycle,会看到clean、compile、package等命令。如果这些命令能正常显示,说明 IDEA 已经正确识别这是一个 Maven 项目。如果整个面板是空的,或者项目目录上没有任何 Maven 图标,那就是导入出问题了——重新关掉项目再导入一次往往就能解决。

5. 第一次构建与启动:看懂 pom.xml 和控制台日志

项目的骨架创建好之后,第一次点运行按钮,你的 IDEA 会开始一个持续时间不等的"依赖下载 → 编译 → 启动"过程。这是整个环节中最容易让人焦虑的阶段,因为你不知道它是卡住了还是在正常干活。

5.1 pom.xml 里到底有啥

pom.xml是 Maven 的眼睛和大脑。Spring Boot 项目的 pom 文件结构不算复杂,核心就三块:

  1. parent部分会引入spring-boot-starter-parent,它定义了一大堆依赖的版本号,让你在下面写依赖时都不用显式写版本。
  2. dependencies部分是项目真正使用的依赖,目前只有一个spring-boot-starter-web。
  3. build部分通常是spring-boot-maven-plugin,这个插件让你能用java -jar直接运行打包后的 jar。
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.5</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>

如果网络正常且镜像配置正确,第一次构建大概会下载 30 到 50 个 jar 包,耗时几分钟属于正常。如果下载速度看起来一直是 0,先用资源管理器看看本地仓库目录大小有没有变化——如果本地仓库持续变大,说明在下载,只是日志刷新慢而已。

5.2 运行主类并观察启动日志

Spring Boot 项目会有一个带@SpringBootApplication注解的类,通常是项目名 + Application这样的格式。在 IDEA 里直接右键这个类,选择Run,控制台开始输出日志。

当看到类似下面这段输出时,说明启动成功:

Tomcat started on port(s): 8080 (http) with context path '' Started Application in 3.214 seconds (JVM running for 3.9)

注意最后一行Started XXXApplication,它表示 Spring Boot 上下文初始化完毕、内嵌 Tomcat 也起来了。此时打开浏览器访问http://localhost:8080,虽然暂时没有任何页面,但若能看到默认的 Whitelabel 错误页,那也证明整个链路是通的。

5.3 修改端口和测试接口

如果你想确认 Web 功能确实正常,可以在src/main/resources/application.properties里改端口:

server.port=8081

然后创建一个简单的 Controller:

package com.example.demo; 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"; } }

重启项目,访问http://localhost:8081/hello,如果页面返回Hello Spring Boot,那你的 IDEA 2020 + Maven + Spring Boot 全链路就彻底跑通了。这段代码不需要深入理解,它只用来验证环境。

6. 新手最容易踩的七个坑:完整排查思路,而不是只看答案

环境配置类的问题有一个共同特点:报错信息千奇百怪,但根源往往就那么几个。如果我把每个问题的"最终答案"直接给你,下一次换个姿势你依然不会修。所以我下面把报错出现时的完整排查链写出来,你可以顺着这个思路自己走一遍。

6.1 坑一:程序包 org.springframework.boot 不存在

看到这类报错,第一反应不应该是代码错误,而是依赖没加载。排查顺序如下:

  1. 打开 Maven 面板,点击刷新按钮(Reload All Maven Projects),等右下角下载任务跑完。
  2. 如果刷新后还是有红叉,去本地仓库目录确认spring-boot-starter-web相关文件夹是否存在。
  3. 如果文件夹只有部分内容,说明上次下载中断了,手动删除对应目录,重新刷新加载。
  4. 检查 IDEA 的 Maven 设置里User settings file是否指向了你的那份settings.xml。

我曾经花了一晚上的时间在这个问题上,最后发现只是 IDEA 里加载的还是默认 setting,根本没走我配置的镜像仓库。这类问题超过七成都是"IDEA 和本地 Maven 没接上头"导致的。

6.2 坑二:无效源发行版 / 错误: 不支持发行版本 5

这个报错是编译级别和 JDK 版本不一致的经典表现。排查顺序:

  1. 确认项目的 SDK 是 1.8:File -> Project Structure -> Project -> SDK。
  2. 确认Project language level是 8。
  3. 确认 Maven 的Importing -> JDK for importer和Runner -> JRE都是 1.8。
  4. 检查当前电脑是否安装过多个 JDK,环境变量JAVA_HOME到底指向哪个。

IDEA 里每个项目都有自己的 Project SDK 设置,很容易出现"系统的 JDK 是 11,但项目要求 8"的冲突。统一改成 1.8 之后,这类报错基本消失。

6.3 坑三:Process terminated 或端口被占用

运行时报Port 8080 was already in use,说明 8080 端口已经被别的进程占用了。排查方法:

  1. 打开命令行执行netstat -ano | findstr 8080,找到占用端口的进程 PID。
  2. 打开任务管理器,找到对应 PID 的进程,确认是不是之前没关的 Java 进程。
  3. 要么杀掉旧进程,要么上一节那样修改server.port。

还有一种情况是Process terminated后没有任何附加信息,这多半是项目启动时崩了,翻找控制台红色日志里最靠前的异常信息,重点看Caused by后面的内容,那才是根因。

6.4 坑四:Maven 面板里什么都没有

这是一个很隐蔽的坑。项目目录看起来正常,pom 文件也在,但右侧 Maven 工具窗口是空白的,IDEA 完全没把它当成 Maven 项目。

排查思路:右键项目根目录,选择Add Framework Support,在弹出的界面里找到 Maven,勾选上,IDEA 就会重新标记项目。如果还是不行,直接关闭项目,删除.idea文件夹,重新打开导入一次。.idea里存的是 IDEA 的缓存配置,删掉它对项目源码没什么影响,是解决"IDEA 不认项目"的万能手段。

6.5 坑五:依赖下载完成后代码还是标红

本地仓库里 jar 包都齐了,但 IDEA 编辑区一直标红找不到类。这其实是 IDEA 索引没更新的问题。处理方法很简单:执行File -> Invalidate Caches,勾选清理索引,重启 IDEA,让它在启动时重新建立索引。

这一步耗时取决于项目大小,Spring Boot 空项目通常不到一分钟。很多人网上搜到一堆方法,其实排在第一位的应该是这个。

6.6 坑六:启动时出现数据库相关的自动配置异常

如果你创建项目时没有勾选数据库组件,但运行报错出现了数据源相关的信息,十有八九是代码里有@Entity注解或者引用了某个 starter 导致 Maven 把依赖自带拉进来了。

最简单的解决方案是:从零创建一个只有spring-boot-starter-web的项目。如果这个项目能正常运行,就说明是你后面加的那些依赖之间产生了配置冲突,需要逐一排查。

6.7 坑七:clean 和 package 异常,但 IDEA 里运行正常

命令行执行mvn clean package失败,但 IDEA 点击运行按钮却一切正常。这个差异通常是因为 IDEA 编译时使用的是自己内置的编译策略,而命令行走的是 Maven 的标准生命周期。

先看命令行报错里是否有文件编码或中文乱码提示,如果有,在pom.xml里加一段全局编码配置:

<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>

加上这段配置之后,命令行和 IDEA 的编译参数就基本一致了。

7. 跑通之后再做几件事:把环境沉淀成可复用的模板

我个人的经验是,环境配置完成之后不要急着关电脑,而是花十分钟把整个过程固化下来,否则下一次换电脑、换版本、带新人入坑,又会从头再踩一遍。

7.1 把 IDEA 的全局 Maven 配置固化

IDEA 里Settings中有很多配置是项目级的,但 Maven 配置可以设为全局默认。具体做法是:在欢迎界面选择Customize -> All settings,或者在空窗口状态下打开Settings,把 Maven 的三个位置配置好。这样以后每次新建或导入项目,IDEA 都会自动使用你本地的 Maven 和 settings.xml,不用每次重新配。

7.2 验证命令行与 IDEA 的一致性

自己建一个测试目录,先执行mvn clean package,再用 IDEA 打开同一目录跑一次,确认两者构建结果一致。这一步看似多余,但能帮你快速判断后续的报错到底是 IDEA 层的问题还是 Maven 层的问题。我见过不少朋友 IDEA 里能跑、命令行跑不了,最后发现是环境变量JAVA_HOME指向的 JDK 和 IDEA 里选的 SDK 完全不是同一套。

7.3 把 Maven 命令直接放进 IDEA 终端

IDEA 2020 自带的终端(Terminal)默认继承系统环境变量,所以在 IDEA 底部的终端面板里输入mvn -v应该能直接看到版本信息。如果提示不是内部或外部命令,检查MAVEN_HOME和Path的环境变量配置。有了这一步,你以后可以在 IDEA 里快速执行mvn clean package、mvn spring-boot:run,非常顺手。

7.4 写给后续学习方向的话

项目骨架跑通之后,下一步可以试着往里面加spring-boot-starter-thymeleaf做页面,或者加spring-boot-starter-data-jpa配合本地数据库做增删改查。届时你会再次接触到application.properties的更多配置项,比如数据源地址、日志级别、上下文路径等。

我个人在带新人实操时,一直坚持一个原则:第一个项目必须亲手从零配置环境,而不是直接导入现成模板。只有自己经历过依赖下载失败、端口占用、编译版本错乱这一连串问题,后续看日志、查异常时才会有足够的感觉。踩坑本身不可怕,可怕的是不知道去哪里看原因。希望这篇里面的排查思路能帮到你。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询