springboot pom.xml配置文件详细解析

Spring Boot pom.xml 配置文件解析

Spring Boot 项目的 pom.xml 是 Maven 构建工具的核心配置文件,定义了项目依赖、插件、构建配置等信息。以下是对其关键部分的详细解析:

项目基本信息
XML 复制代码
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
  • groupId: 组织或公司唯一标识,通常采用反向域名规则
  • artifactId: 项目唯一标识
  • version: 项目版本号,SNAPSHOT 表示开发版本
  • packaging: 打包方式,Spring Boot 通常使用 jar
父项目依赖
XML 复制代码
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.1.0</version>
    <relativePath/>
</parent>
  • 继承 spring-boot-starter-parent 可以统一管理依赖版本
  • 自动包含常用插件配置(如打包插件)
  • 提供默认的 Maven 资源过滤
项目依赖管理
XML 复制代码
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
  • spring-boot-starter-* 是 Spring Boot 提供的标准依赖模块
  • 无需指定版本号(由父 POM 管理)
  • scope 定义依赖作用域(test 表示仅测试时使用)
构建配置
XML 复制代码
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
  • spring-boot-maven-plugin 提供打包支持
  • 可将所有依赖打包成可执行 jar(fat jar)
  • 支持运行 mvn spring-boot:run 直接启动应用
属性配置
XML 复制代码
<properties>
    <java.version>17</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
  • 定义项目级变量,便于统一管理
  • 可覆盖父 POM 中的默认配置(如 Java 版本)
依赖管理
XML 复制代码
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2022.0.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
  • 用于管理依赖版本(不实际引入依赖)
  • 特别适用于多模块项目
  • import scope 可继承其他 POM 的依赖管理
资源过滤
XML 复制代码
<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
    </resource>
</resources>
  • 启用资源过滤可替换配置文件中的占位符
  • 常用于区分不同环境的配置(如 application-${env}.properties)
典型特性说明

Spring Boot 的 POM 设计遵循"约定优于配置"原则,通过 starter 机制简化依赖管理。例如:

  • spring-boot-starter-web 自动包含 Tomcat 和 Spring MVC
  • spring-boot-starter-data-jpa 包含 Hibernate 和 JPA 相关依赖
  • spring-boot-starter-actuator 提供监控端点
自定义配置示例

添加 MyBatis 和 MySQL 依赖:

XML 复制代码
<dependencies>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>
多环境配置

通过 profiles 区分不同环境:

XML 复制代码
<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <activatedProperties>dev</activatedProperties>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    
    <profile>
        <id>prod</id>
        <properties>
            <activatedProperties>prod</activatedProperties>
        </properties>
    </profile>
</profiles>

可通过 mvn -Pprod 激活生产环境配置

相关推荐
咩咩啃树皮8 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
阳光是sunny8 小时前
LangGraph中的Reducer是什么
前端·人工智能·后端
灯澜忆梦8 小时前
GO_并发编程---定时器
开发语言·后端·golang
阳光是sunny8 小时前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
鱟鲥鳚8 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
皮皮林5519 小时前
开源实力派,给本地 AI 装上深度调研能力,一张 3090 跑到 95.7 分!
后端
努力的小雨9 小时前
把 Windows 桌面图标做成一个会自己运转的小世界
后端
武子康10 小时前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端
大模型码小白10 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司10 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求