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 等配置
相关推荐
why1512 小时前
腾讯(QQ浏览器)后端开发
开发语言·后端·golang
浪裡遊2 小时前
跨域问题(Cross-Origin Problem)
linux·前端·vue.js·后端·https·sprint
声声codeGrandMaster2 小时前
django之优化分页功能(利用参数共存及封装来实现)
数据库·后端·python·django
呼Lu噜2 小时前
WPF-遵循MVVM框架创建图表的显示【保姆级】
前端·后端·wpf
bing_1582 小时前
为什么选择 Spring Boot? 它是如何简化单个微服务的创建、配置和部署的?
spring boot·后端·微服务
学c真好玩3 小时前
Django创建的应用目录详细解释以及如何操作数据库自动创建表
后端·python·django
Asthenia04123 小时前
GenericObjectPool——重用你的对象
后端
Piper蛋窝3 小时前
Go 1.18 相比 Go 1.17 有哪些值得注意的改动?
后端
excel3 小时前
招幕技术人员
前端·javascript·后端
盖世英雄酱581363 小时前
什么是MCP
后端·程序员