<?xml version="1.0" encoding="UTF-8"?>
<!--
Maven项目的核心配置文件,遵循XML格式
- version: XML版本
- 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">
<!-- 1. 基础信息配置 -->
<!-- POM模型版本,固定为4.0.0(当前最新稳定版) -->
<modelVersion>4.0.0</modelVersion>
<!-- 2. 项目坐标(唯一标识项目) -->
<!-- 组织/公司标识,通常为反向域名(如com.example) -->
<groupId>com.example</groupId>
<!-- 项目/模块名称,唯一标识groupId下的项目(如demo-project) -->
<artifactId>springboot-demo</artifactId>
<!-- 项目版本号,遵循语义化版本(主版本.次版本.修订号) -->
<version>1.0.0-SNAPSHOT</version>
<!-- 项目名称(可选),用于文档和IDE显示 -->
<name>Spring Boot Demo Project</name>
<!-- 项目描述(可选),简要说明项目用途 -->
<description>A sample Spring Boot project with Maven</description>
<!-- 项目URL(可选),通常指向项目仓库或官网 -->
<url>https://github.com/example/springboot-demo</url>
<!-- 3. 父项目配置(可选,用于继承配置) -->
<parent>
<!-- 父项目坐标,此处继承Spring Boot的 starter parent -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.10</version>
<!-- 父项目pom.xml的相对路径(默认从仓库查找) -->
<relativePath/>
</parent>
<!-- 4. 属性配置(全局变量,用于统一管理版本和参数) -->
<properties>
<!-- 项目编码格式,确保编译和资源文件使用UTF-8 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 报告输出编码 -->
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Java编译版本 -->
<maven.compiler.source>11</maven.compiler.source>
<!-- 生成的class文件兼容的Java版本 -->
<maven.compiler.target>11</maven.compiler.target>
<!-- 自定义依赖版本变量,便于统一升级 -->
<mybatis.version>3.5.13</mybatis.version>
<lombok.version>1.18.24</lombok.version>
</properties>
<!-- 5. 依赖管理(声明项目所需的外部库) -->
<dependencies>
<!-- 示例1:Spring Boot Web Starter(web开发核心依赖) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 版本继承自父项目,无需重复声明 -->
</dependency>
<!-- 示例2:数据库访问依赖(MyBatis) -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<!-- 引用properties中定义的版本变量 -->
<version>${mybatis.version}</version>
</dependency>
<!-- 示例3:国产数据库Kingbase驱动 -->
<dependency>
<groupId>com.kingbase8</groupId>
<artifactId>kingbase8</artifactId>
<version>8.6.0</version>
<!-- 作用域:仅在编译和测试时有效,运行时由容器提供 -->
<scope>runtime</scope>
</dependency>
<!-- 示例4:简化代码工具(Lombok) -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<!-- 作用域:仅在编译时有效,不打包到最终产物 -->
<scope>provided</scope>
</dependency>
<!-- 示例5:单元测试依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<!-- 作用域:仅在测试阶段有效 -->
<scope>test</scope>
<!-- 排除依赖:移除不需要的子依赖(如junit4) -->
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 示例6:本地JAR依赖(非仓库中的特殊JAR) -->
<dependency>
<groupId>com.custom</groupId>
<artifactId>local-sdk</artifactId>
<version>2.0.0</version>
<!-- 作用域:系统级依赖,需配合systemPath使用 -->
<scope>system</scope>
<!-- 本地JAR路径,建议使用项目相对路径 -->
<systemPath>${project.basedir}/lib/custom-sdk-2.0.0.jar</systemPath>
</dependency>
</dependencies>
<!-- 6. 构建配置(指定项目打包、编译等规则) -->
<build>
<!-- 最终生成的文件名(默认是artifactId-version) -->
<finalName>${project.artifactId}-${project.version}</finalName>
<!-- 插件配置 -->
<plugins>
<!-- 插件1:Spring Boot打包插件(将项目打包为可执行JAR) -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 插件版本继承自父项目 -->
<configuration>
<!-- 允许在打包时跳过测试 -->
<skip>false</skip>
<!-- 指定主类(Spring Boot入口类) -->
<mainClass>com.example.demo.DemoApplication</mainClass>
</configuration>
<executions>
<execution>
<!-- 绑定到Maven的package生命周期 -->
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 插件2:编译插件(指定Java版本) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<!-- 引用properties中定义的Java版本 -->
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<!-- 插件3:测试插件(配置单元测试行为) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<!-- 跳过测试(开发阶段可临时开启) -->
<skipTests>false</skipTests>
<!-- 包含特定测试类 -->
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
</plugin>
</plugins>
<!-- 资源文件配置(指定需要打包的非Java文件) -->
<resources>
<resource>
<!-- 源目录:src/main/resources下的文件 -->
<directory>src/main/resources</directory>
<!-- 是否过滤资源文件(替换${}变量) -->
<filtering>true</filtering>
<!-- 包含的文件类型 -->
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
<!-- 7. 分发管理(配置部署到远程仓库的规则,可选) -->
<distributionManagement>
<!-- 快照版本仓库(开发中的版本) -->
<snapshotRepository>
<id>nexus-snapshots</id>
<url>https://repo.example.com/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
<!-- 发布版本仓库(正式发布的版本) -->
<repository>
<id>nexus-releases</id>
<url>https://repo.example.com/nexus/content/repositories/releases/</url>
</repository>
</distributionManagement>
<!-- 8. 依赖管理(统一管理子模块的依赖版本,可选) -->
<dependencyManagement>
<dependencies>
<!-- 声明依赖版本,但不实际引入,子模块需显式声明才会生效 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.25</version>
</dependency>
</dependencies>
<!-- 环境配置文件(profiles):区分不同环境的配置 -->
<profiles>
<!-- 1. 开发环境(默认激活) -->
<profile>
<!-- 环境唯一标识(命令行使用:-Pdev) -->
<id>dev</id>
<!-- 默认激活此环境 -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<!-- 开发环境特有属性 -->
<properties>
<!-- 环境标识(用于资源文件过滤) -->
<env>dev</env>
<!-- 开发环境数据库配置 -->
<db.url>jdbc:mysql://localhost:3306/dev_db</db.url>
<db.username>dev_user</db.username>
<db.password>dev_pass</db.password>
<!-- 开发环境依赖版本(如较低版本的日志组件) -->
<logback.version>1.2.11</logback.version>
</properties>
<!-- 开发环境特有依赖 -->
<dependencies>
<!-- 开发环境专用调试工具 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
</dependencies>
</profile>
<!-- 2. 测试环境 -->
<profile>
<id>test</id>
<properties>
<env>test</env>
<!-- 测试环境数据库配置 -->
<db.url>jdbc:mysql://test-server:3306/test_db</db.url>
<db.username>test_user</db.username>
<db.password>test_pass</db.password>
<!-- 测试环境依赖版本 -->
<logback.version>1.4.8</logback.version>
</properties>
<dependencies>
<!-- 测试环境专用监控工具 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
</profile>
<!-- 3. 生产环境 -->
<profile>
<id>prod</id>
<properties>
<env>prod</env>
<!-- 生产环境数据库配置(实际中可能通过外部配置中心获取) -->
<db.url>jdbc:mysql://prod-server:3306/prod_db</db.url>
<db.username>prod_user</db.username>
<db.password>${prod.db.password}</db.password> <!-- 可通过命令行传入密码 -->
<!-- 生产环境依赖版本(稳定版) -->
<logback.version>1.4.8</logback.version>
</properties>
<dependencies>
<!-- 生产环境专用安全组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
<!-- 生产环境构建配置 -->
<build>
<plugins>
<!-- 生产环境打包时跳过测试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- 4. 特殊环境:国产化环境(如使用Kingbase数据库) -->
<profile>
<id>kingbase</id>
<properties>
<env>kingbase</env>
<db.url>jdbc:kingbase8://kingbase-server:54321/kingbase_db</db.url>
<db.driver>com.kingbase8.Driver</db.driver>
</properties>
<dependencies>
<!-- 替换默认数据库驱动为Kingbase -->
<dependency>
<groupId>com.kingbase8</groupId>
<artifactId>kingbase8</artifactId>
<version>8.6.0</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</profile>
</profiles>
<!-- 构建配置(全局构建规则) -->
<build>
<finalName>${project.artifactId}-${project.version}-${env}</finalName>
<!-- 资源文件过滤:根据激活的环境替换配置文件中的变量 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 开启过滤:替换资源文件中的${变量名} -->
<filtering>true</filtering>
<!-- 包含所有环境通用的配置文件 -->
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<!-- 引入环境特定的配置文件(如src/main/resources/dev/...) -->
<resource>
<directory>src/main/resources/${env}</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<!-- Spring Boot打包插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.example.Application</mainClass>
</configuration>
</plugin>
<!-- 编译插件:使用全局java.version -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
以上通过豆包生成,仅用作记录
2003

被折叠的 条评论
为什么被折叠?



