Maven的安装和执行

使用 Maven 作为构建工具并创建一个最简单的 Spring Boot 项目时,以下是详细的步骤来帮助你完成操作。

1. 安装 Java 和 Maven

  • 安装 Java:www.oracle.com/java/techno...

  • 安装 Maven:maven.apache.org/download.cg...

    • Windows 用户 :选择 apache-maven-3.9.9-bin.zip
    • Linux/macOS 用户 :选择 apache-maven-3.9.9-bin.tar.gz
    • 如果您仅需要使用 Maven 并且不打算修改源代码,选择 Binary 版本会更加方便快捷。
  • 配置环境变量

    • 打开系统环境变量设置 :在 Windows 10Windows 11 上,右键点击 此电脑计算机 ,然后选择 属性
    • 选择左侧的 高级系统设置
    • 在弹出的窗口中,点击 环境变量
    • 在环境变量窗口中,点击 系统变量 区域的 新建
    • 在编辑窗口中,点击 新建 ,然后添加 Maven 的 bin 目录路径。
    • 点击 确定 保存。
  • 验证安装:

    java -version
    mvn -version

2. 创建一个 Maven 项目

  • 在命令行创建一个新的 Maven 项目
ini 复制代码
// Maven 会自动下载并创建一个简单的 Java 项目。
mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  • 进入项目目录:cd my-app
  • 构建项目:mvn clean install
  • 运行项目:mvn exec:java

3. 配置 pom.xml

手动生成 pom.xml 文件

  • 简单的模板:
xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>my-app</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>my-app</name>
    <description>Demo project for Maven</description>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

如果问题依然存在,您可以通过添加 -X 参数启用详细的调试信息,查看更详细的错误日志

详细解析 pom.xml 文件

  1. XML 声明和命名空间
  • <?xml version="1.0" encoding="UTF-8"?>:这表示 XML 文件的版本和编码格式。
  • <project xmlns="http://maven.apache.org/POM/4.0.0":这里定义了 XML 文件的命名空间
  • xsi:schemaLocation:定义了 XML 模式的位置
  1. modelVersion
  • 这是 Maven POM 文件的版本号
  1. groupId, artifactId, version
  • groupId :定义了项目的组名,通常是公司、组织或开发者的域名倒写。例如 com.example
  • artifactId :项目的唯一标识符。在同一组下,artifactId 必须唯一。这里的 my-app 是项目名称。
  • ersion :项目的版本号。1.0-SNAPSHOT 表示这是一个尚未完成的开发版本,通常会频繁更新。Maven 会根据 SNAPSHOT 标记来处理版本。
  1. packaging
  • 定义了项目的打包类型。常见的有 jarwarpom 等,表示项目的输出文件类型。
  1. namedescription
  • name :项目的名称,通常是 artifactId 的描述。
  • description:项目的简短描述,帮助其他开发者理解项目的功能或目的。
  1. dependenciesdependency
  • dependencies:包含了该项目的所有依赖项。
  • dependency :每个依赖的具体信息。包括:
    • groupId :依赖的组织标识符,这里是 junit
    • artifactId :依赖的项目标识符,这里是 junit
    • version :依赖的版本号,这里是 4.13.1
    • scope :表示依赖的作用范围。test 表示该依赖仅在测试时使用,不会包含在最终的构建结果中。

4. 创建 Spring Boot 启动类

typescript 复制代码
package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SimpleApplication {
    public static void main(String[] args) {
        SpringApplication.run(SimpleApplication.class, args);
    }
}

5. 创建 Controller 类

定义一个简单的 HTTP 接口来处理前端的请求。

kotlin 复制代码
package com.example.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, World!";
    }
}

6. 配置 application.properties(可选)

  • 可以忽略配置文件,默认情况下 Spring Boot 会监听 8080 端口。
  • 可以进行服务器配置、日志配置、数据库配置、Spring JPA 配置、Spring MVC 配置(允许跨域请求)、文件上传配置

7. 构建和运行项目

shell 复制代码
# 构建项目
mvn clean install

# 启动项目
mvn spring-boot:run

# 打开浏览器,访问 `http://localhost:8080/hello`。

mvn clean install 的作用

  1. clean 阶段 :删除项目中 target 目录下的所有构建文件
  2. install 阶段
  • 编译代码 :Maven 会根据 src/main/java 目录中的 Java 文件进行编译。
  • 运行测试 :Maven 会运行位于 src/test/java 目录中的所有单元测试。如果你有 JUnit 测试,Maven 会在这一步运行它们。
  • 打包项目 :根据 pom.xml 中的配置,Maven 会将代码打包成 JAR 文件(如果配置了 jar 打包类型)。
  • 安装到本地仓库 :打包完成后,Maven 会将该 JAR 文件安装到本地 Maven 仓库(默认为 ~/.m2/repository),以便其他项目可以引用。

mvn spring-boot:run 执行过程

  1. Maven 会调用 spring-boot-maven-plugin:这个插件会首先编译项目并打包成可执行的 JAR 文件,然后运行该文件。
  2. Spring Boot 会加载主类 SimpleApplication.java,并从该类开始初始化 Spring 应用。
  3. SimpleApplication.java 使用 @SpringBootApplication 注解,标识为应用的主配置类,启动 Spring 容器。
  4. 嵌入式容器启动: 引入 spring-boot-starter-web 后,Spring Boot 会自动集成嵌入式 Tomcat 容器,项目可以直接运行。
  5. Spring 容器初始化: Spring Boot 扫描整个应用的包(包括 com.example.controller 包)并自动注册所有带有 @Controller@RestController 注解的类。

8. 其他问题

  1. pom.xml 文件发生变动后为什么需要重新执行 mvn clean install
  • 是因为 pom.xml 是 Maven 项目的核心配置文件,任何对该文件的修改都会影响项目的构建和依赖。
  1. 重新执行 mvn clean install是否需要重新下载依赖?
  • 如果你没有修改依赖(例如只修改了项目的 name 或者其他非依赖项的配置),则 Maven 会跳过重新下载依赖的步骤,只重新编译和构建项目。
  1. 引入 spring-boot-starter-web 前后的变化
功能 引入前 引入后
Web 容器 需要手动配置嵌入式 Web 容器(如 Tomcat) 自动配置嵌入式 Tomcat,默认使用,无需手动配置
依赖 需要手动引入 spring-webmvctomcat 等依赖 只需要引入 spring-boot-starter-web,自动包含 Web 相关的所有依赖
控制器注解 使用 @Controller 配合 @RequestMapping 来处理请求 使用 @RestController 简化 HTTP 请求处理,自动支持 JSON 序列化
Web 配置 需要手动配置 Spring MVC 和 DispatcherServlet 等组件 自动配置 Spring MVC 和相关组件,无需手动配置
请求响应格式 需要手动处理请求和响应(如 @ResponseBody 自动支持 JSON 响应,省去 @ResponseBody 等配置
相关推荐
绝无仅有23 分钟前
GoZero 中 `make` 后返回数据与原数据不对齐的几种解决方案
后端·面试·程序员
编程小筑43 分钟前
C语言的语法
开发语言·后端·golang
我不是你的灯笼1 小时前
Go语言的 的输入/输出流(I/O Streams)基础知识
开发语言·后端·golang
Linux520小飞鱼2 小时前
Ruby语言的数据类型
开发语言·后端·golang
java熊猫2 小时前
Ruby语言的编程范式
开发语言·后端·golang
007php0072 小时前
GoZero项目中解决`go.mod`和`go.sum`校验和不匹配问题的解决方案
java·服务器·开发语言·后端·python·golang·php
BinaryBardC2 小时前
Elixir语言的面向对象编程
开发语言·后端·golang
C++小厨神2 小时前
Erlang语言的字符串处理
开发语言·后端·golang
SomeB1oody2 小时前
【Rust自学】11.1. 编写和运行测试
开发语言·后端·rust
海绵波波1073 小时前
flask后端开发(13):登录功能后端实现和钩子函数
后端·python·flask