Maven是一个标准化的java项目管理和构建工具,其关键在于pom.xml文件内容。pom.xml中需要指定项目依赖,Maven会自动下载依赖的包并缓存到本地。对SpringBoot项目来说,其依赖关系大同小异,接下来将以Wi-Blog项目对每个包及其作用进行解析。
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.7.5version>
<relativePath/>
parent>
具体来说,当你将 spring-boot-starter-parent 作为父级项目时,它会自动为你的项目提供以下功能:
当你在 Maven 项目中使用 元素来引用一个父项目时,可以通过 元素来指定父项目相对于当前项目的路径。默认情况下,Maven 会在本地的仓库中查找父项目的坐标信息,并下载相应的父项目。但是,如果你在本地的项目结构中已经包含了父项目,你可以使用 元素来告诉 Maven 父项目的相对路径,以便 Maven 在本地项目中查找父项目,而不是去下载。
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
<java.version>1.8java.version>
properties>
指定项目源代码的编码格式,指定项目报告的输出格式,也指定了项目使用的java版本
properties 元素可以定义任意数量的属性,根据项目的需要进行自定义。这些属性可以根据项目的要求来定义。后续使用的时候只需要使用对应定义的
${PropertyName}$
即可
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-thymeleafartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.sessiongroupId>
<artifactId>spring-session-coreartifactId>
dependency>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>2.2.2version>
dependency>
<dependency>
<groupId>cn.hutoolgroupId>
<artifactId>hutool-captchaartifactId>
<version>5.8.7version>
dependency>
该依赖项是 Hutool 库的验证码模块,用于生成和验证验证码。Hutool 是一个开源的 Java 工具库,提供了许多实用的工具类和方法,用于简化 Java 开发过程。
具体来说,“hutool-captcha” 模块提供了生成和验证验证码所需的功能。它可以用于生成各种类型的验证码,如数字验证码、字母验证码、图形验证码等。同时,它还提供了验证用户输入的验证码是否正确的方法
<dependency>
<groupId>com.atlassian.commonmarkgroupId>
<artifactId>commonmarkartifactId>
<version>0.17.0version>
dependency>
<dependency>
<groupId>com.atlassian.commonmarkgroupId>
<artifactId>commonmark-ext-gfm-tablesartifactId>
<version>0.17.0version>
dependency>
第一个依赖项是 “commonmark”,是 CommonMark Java 库,用于解析和处理 Markdown 格式的文本,如前面所述。
第二个依赖项是 “commonmark-ext-gfm-tables”,是 CommonMark 扩展库,提供了对 GFM(GitHub Flavored Markdown)表格的支持。GFM 是在标准的 CommonMark 基础上扩展的一种 Markdown 变体,增加了一些额外的功能,其中之一就是表格。这个扩展库允许你在 Markdown 文本中使用 GFM 表格语法,并提供相应的解析和渲染功能
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<scope>runtimescope>
dependency>
在 Maven 项目中添加这个依赖项后,你可以使用 JDBC API 来建立与 MySQL 数据库的连接,并执行各种数据库操作,如查询、插入、更新、删除等。这个依赖项提供了与 MySQL 数据库进行通信所需的类和方法。
注意 元素被设置为 “runtime”。这表示该依赖项仅在运行时才需要,而不是在编译时。这通常是因为 MySQL 驱动程序只在运行时用于连接数据库,而不是在编译期间。
编译期间导入(即在代码中使用 import 语句)用于告诉编译器在编译代码时从指定的包中引入所需的类或接口。这样可以让编译器在编译过程中正确解析和检查代码,以便在编译时进行类型检查、语法检查等。编译期间导入对于编译器来说是必需的,它确保代码在编译时可以正确地找到所需的类和接口,并且可以进行正确的类型检查。
运行期间导入(即在运行时加载类或使用反射机制动态加载类)也是可能的。在某些情况下,你可能希望在运行时根据条件或配置来加载特定的类。运行期间导入的主要影响是,在运行时才会加载和使用类,而不是在编译时。这意味着编译器不会对运行时导入的类进行类型检查,因为它们在编译时可能是未知的。这可能导致运行时出现类找不到、类型转换错误等异常,如果使用不当,可能会导致程序运行失败。
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
该依赖项是用于在 Spring Boot 应用程序中进行测试的启动器。它包含了一些常用的测试框架和工具,使得编写和执行测试变得更加方便。
在 Maven 项目中添加这个依赖项后,你可以使用 Spring Boot 测试框架来编写和运行各种类型的测试,例如单元测试、集成测试和端到端测试。这个依赖项提供了许多与测试相关的类和方法,以及集成了一些流行的测试库和工具,如 JUnit、Mockito、AssertJ 等。
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
这个 元素包含了一个 Maven 插件的配置,即 “spring-boot-maven-plugin”。该插件是 Spring Boot 提供的用于构建和打包应用程序的 Maven 插件。
通过在 Maven 项目的 部分配置这个插件,可以使用 Maven 命令来构建和打包 Spring Boot 应用程序。
具体来说,这个插件的主要作用是将 Spring Boot 应用程序打包为可执行的 JAR 文件或 WAR 文件,并且可以包含一个内嵌的 Web 服务器,使得应用程序可以直接运行。
当你运行 Maven 命令如 mvn package 或 mvn spring-boot:run 时,该插件会自动执行相应的构建和打包任务,生成可执行的应用程序。