一、Maven

1. 什么是 Maven?

Maven 是一款基于 POM(Project Object Model,项目对象模型) 的项目管理工具。简单来说,它通过 pom.xml 文件自动获取项目所需的 jar 包,无需手动下载和添加,极大减少了依赖管理的工作量。

2. 为什么要用 Maven?

  • 简化开发流程:自动处理依赖关系,避免手动找包、导包的繁琐操作。
  • 统一项目构建:提供跨平台(Linux、Windows、MacOS)的标准化构建流程,支持编译、测试、打包、发布等一键操作。
  • 减少开发 Bug:通过统一依赖版本,避免因版本不一致导致的兼容性问题。

3. Maven 核心功能

(1)项目构建

Maven 提供了一套标准化的生命周期命令,常见命令如下:

  • compile:编译源代码,生成 class 文件。
  • test:执行测试代码,验证功能正确性。
  • package:将项目打包为 jar 包或 war 包(jar 包用于普通项目,war 包用于 Web 项目)。
  • clean:清理项目编译生成的临时文件( target 目录)。

在 IDEA 中,只需在 Maven 面板点击对应命令,即可完成相应操作,例如点击 package 可直接生成项目包。

(2)依赖管理

依赖即项目运行所需的 jar 包,Maven 通过 pom.xml 中的 <dependencies> 标签管理依赖,核心配置如下:

<dependencies>
    <!-- MySQL 驱动依赖 -->
    <dependency>
        <groupId>mysql</groupId> <!-- 组织 ID,唯一标识依赖的开发组织 -->
        <artifactId>mysql-connector-java</artifactId> <!-- 项目 ID,唯一标识依赖本身 -->
        <version>8.0.30</version> <!-- 依赖版本号 -->
    </dependency>
</dependencies>

配置后点击 IDEA 中的 Reload All Maven Projects 按钮,Maven 会自动下载依赖并添加到项目中。

(3)依赖传递与排除
  • 依赖传递:若 A 依赖 B,B 依赖 C,Maven 会自动下载 A、B、C 三个依赖,无需手动配置 C,例如项目引入 Spring 核心依赖时,会自动下载其依赖的日志组件。
  • 依赖排除:若某个间接依赖不需要,可通过 <exclusions> 标签排除,例如:
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>6.0.6</version>
    <!-- 排除 spring-jcl 依赖 -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jcl</artifactId>
        </exclusion>
    </exclusions>
</dependency>

4. Maven 仓库

Maven 依赖存储在仓库中,分为三类:

  • 本地仓库:本地计算机的目录(.m2\repository),用于缓存下载的依赖,后续项目可直接复用。
  • 中央仓库:Maven 官方维护的远程仓库(地址:https://repo1.maven.org/maven2/),存储全球绝大多数开源依赖。

在这里插入图片描述

当项目引入对应的依赖jar包时:如果本地仓库有,则直接引入;如果没有,则先去中央仓库下载jar包到本地,再引入

  • 私服:企业或团队搭建的私有仓库,用于存储内部依赖,优先从私服下载依赖,提升速度并保障安全性。

当maven需要下载资源时:如果本地仓库不存在,就向私服请求,私服存在就直接返回;私服不存在则先从中央仓库下载到私服,再返回到本地。
在这里插入图片描述

二、创建第一个 HelloWorld 项目

SpringBoot 是 Spring 框架的“脚手架”,能快速搭建 Spring 项目,无需手动配置 Web 服务器

1. 项目目录结构解析

SpringBoot 项目目录遵循“约定大于配置”,目录如下:

demo
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com.example.demo  # 源代码目录
│   │   │       ├── DemoApplication.java  # 项目启动类(含 main 方法)
│   │   │       └── HelloController.java  # 自定义控制器(手动创建)
│   │   └── resources  # 资源目录
│   │       ├── static  # 静态资源(JS、CSS、HTML)
│   │       ├── templates  # 动态模板(Thymeleaf)
│   │       └── application.properties  # 项目配置文件
│   └── test  # 测试代码目录
└── pom.xml  # Maven 配置文件

2. 编写 HelloWorld 代码

  1. com.example.demo 包下创建 HelloController 类:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController  // 标识此类为 Web 控制器,返回 JSON 或字符串
public class HelloController {

    // 配置请求路径:http://127.0.0.1:8080/hello
    @RequestMapping("/hello")
    public String sayHi() {
        return "Hello world";  // 响应内容
    }
}
  1. 找到项目启动类 DemoApplication.java(有 @SpringBootApplication 注解),点击类左侧的“Run”按钮,启动项目。

3. 访问项目

项目启动成功后,打开浏览器,输入地址 http://127.0.0.1:8080/hello
在这里插入图片描述

4. 常见错误排查

(1)404 错误:资源不存在
  • 原因 1:URL 路径错误(少写、错写路径)。
  • 原因 2:控制器注解错误(如用 @Controller 代替 @RestController@Controller 需配合模板使用,返回字符串会被当作模板路径)。
  • 解决:检查 URL 与 @RequestMapping 配置是否一致,确保注解正确。
(2)500 错误:服务器内部错误
  • 原因:代码逻辑错误(空指针异常)。
  • 解决:查看 IDEA 控制台的异常日志,定位错误代码行(如 int res = 10/0 会触发算术异常),修复逻辑错误。
(3)无法访问网站:连接被拒绝
  • 原因:SpringBoot 项目未启动成功(如端口被占用、JDK 版本不匹配)。
  • 解决:检查 IDEA 控制台是否有启动错误,若端口被占用,可在 application.properties 中配置新端口。
    在这里插入图片描述
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐