<?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>
    <parent>
        <groupId>com.njcn</groupId>
        <artifactId>rdms-framework</artifactId>
        <version>${revision}</version>
    </parent>

    <artifactId>rdms-common</artifactId>
    <packaging>jar</packaging>
    <name>${project.artifactId}</name>
    <description>定义基础 pojo 类、枚举、工具类等等</description>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>


    <dependencies>
        <!-- Spring 核心 -->
        <!-- Spring 核心工具类,提供资源加载、类型转换等基础功能 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <scope>provided</scope> <!-- 设置为 provided，只有工具类需要使用到 -->
        </dependency>
        <!-- Spring 表达式语言(SpEL),用于动态表达式解析 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <scope>provided</scope> <!-- 设置为 provided，只有工具类需要使用到 -->
        </dependency>
        <!-- Spring AOP 支持,提供面向切面编程能力 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <scope>provided</scope> <!-- 设置为 provided，只有工具类需要使用到 -->
        </dependency>
        <!-- AspectJ 织入器,实现 AOP 切面逻辑 -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <scope>provided</scope> <!-- 设置为 provided，只有工具类需要使用到 -->
        </dependency>

        <dependency>
            <!-- 用于生成自定义的 Spring @ConfigurationProperties 配置类的说明文件 -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- Web 相关 -->
        <!-- Spring Web 工具类,提供 HTTP 请求处理、文件上传等功能 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <scope>provided</scope> <!-- 设置为 provided，只有工具类需要使用到 -->
        </dependency>

        <!-- Jakarta Servlet API,定义 HTTP 请求响应接口规范 -->
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <scope>provided</scope> <!-- 设置为 provided，只有工具类需要使用到 -->
        </dependency>

        <!-- Swagger 注解,用于 API 文档生成(@Schema、@Operation 等) -->
        <dependency>
            <groupId>io.swagger.core.v3</groupId>
            <artifactId>swagger-annotations-jakarta</artifactId>
            <version>${swagger.version}</version>
        </dependency>

        <!-- RPC 远程调用相关 -->
        <!-- OpenFeign 核心,用于声明式 HTTP 客户端(@FeignClient 注解) -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-openfeign-core</artifactId>
            <scope>provided</scope> <!-- 设置为 provided，主要是 api 包使用到 -->
        </dependency>

        <!-- 监控相关 -->
        <!-- SkyWalking 链路追踪工具包,用于分布式追踪(@Trace 注解) -->
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-trace</artifactId>
        </dependency>

        <!-- 工具类相关 -->
        <dependency>
            <!-- Lombok,自动生成 getter/setter/构造器等样板代码 -->
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <!-- MapStruct 核心,用于对象映射转换(DTO/VO/DO 互转) -->
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
        </dependency>
        <dependency>
            <!-- MapStruct JDK8+ 支持,提供 Java 8 时间类型等映射 -->
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-jdk8</artifactId>
        </dependency>
        <dependency>
            <!-- MapStruct 注解处理器,编译期生成映射实现代码 -->
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
        </dependency>

        <dependency>
            <!-- Google Guava,提供集合、缓存、并发等增强工具类 -->
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <scope>provided</scope> <!-- 设置为 provided，只有工具类需要使用到 -->
        </dependency>

        <dependency>
            <!-- Jackson 数据绑定,用于 JSON 序列化/反序列化 -->
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <scope>provided</scope> <!-- 设置为 provided，只有工具类需要使用到 -->
        </dependency>
        <dependency>
            <!-- Jackson 核心,提供 JSON 解析底层能力 -->
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <scope>provided</scope> <!-- 设置为 provided，只有工具类需要使用到 -->
        </dependency>
        <dependency>
            <!-- Jackson JSR310 支持,用于 LocalDateTime 等 Java 8 时间类型序列化 -->
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
            <scope>provided</scope> <!-- 设置为 provided，只有工具类需要使用到 -->
        </dependency>

        <dependency>
            <!-- SLF4J 日志门面,提供统一的日志接口 -->
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <scope>provided</scope> <!-- 设置为 provided，只有工具类需要使用到 -->
        </dependency>

        <dependency>
            <!-- Jakarta Validation API,用于参数校验(@NotNull、@Valid 等注解) -->
            <groupId>jakarta.validation</groupId>
            <artifactId>jakarta.validation-api</artifactId>
            <scope>provided</scope> <!-- 设置为 provided，主要是 PageParam 使用到 -->
        </dependency>

        <dependency>
            <!-- Hutool 工具包,提供日期、加密、HTTP、Excel 等常用工具类 -->
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
        </dependency>

        <dependency>
            <!-- 阿里 TTL,用于线程池场景下 ThreadLocal 值的传递 -->
            <groupId>com.alibaba</groupId>
            <artifactId>transmittable-thread-local</artifactId>
        </dependency>

        <dependency>
            <!-- Easy-Trans 注解包,用于 VO 数据字典翻译(@Trans 注解) -->
            <groupId>com.fhs-opensource</groupId>
            <artifactId>easy-trans-anno</artifactId> <!-- 默认引入的原因，方便 xxx-module-api 包使用 -->
        </dependency>

        <!-- Test 测试相关 -->
        <dependency>
            <!-- Spring Boot 测试启动器,集成 JUnit、Mockito 等测试框架 -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>
