<?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.mini.framework</groupId>
    <artifactId>framework-build</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>

    <name>framework-build</name>
    <description>公共构建配置，供各子模块继承</description>
    <url>http://doc.framework.xxggpt.com</url>

    <!-- ==================== 公共属性 ==================== -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <argLine>-Dfile.encoding=UTF-8</argLine>
        <java.version>21</java.version>

        <!-- ====== 框架统一版本号（修改这里即可切换快照/正式版本）====== -->
        <!-- 正式版本: 2.1.1 -->
        <!-- 快照版本: 2.1.1-SNAPSHOT -->
        <framework.version>2.1.1-SNAPSHOT</framework.version>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>

        <!-- 第三方依赖版本 -->
        <junit.version>5.11.4</junit.version>
        <spring.version>6.2.11</spring.version>
        <spring.boot.version>3.4.5</spring.boot.version>
        <spring.data.redis.version>3.4.1</spring.data.redis.version>
        <log4j.version>2.25.3</log4j.version>
        <commons.lang3.version>3.18.0</commons.lang3.version>
        <commons.io.version>2.18.0</commons.io.version>
        <gson.version>2.11.0</gson.version>
        <jackson.version>2.18.2</jackson.version>
        <jakarta.servlet.version>6.1.0</jakarta.servlet.version>
        <mybatis.version>3.5.16</mybatis.version>
        <mybatis.spring.version>3.0.4</mybatis.spring.version>
        <mybatis.plus.version>3.5.9</mybatis.plus.version>
        <aspectj.version>1.9.22.1</aspectj.version>
        <guava.version>33.4.0-jre</guava.version>
        <jedis.version>5.2.0</jedis.version>
        <redisson.version>3.37.0</redisson.version>
        <aliyun.oss.version>3.18.1</aliyun.oss.version>
        <tomcat.embed.version>11.0.2</tomcat.embed.version>
        <retrofit.version>2.11.0</retrofit.version>
        <okhttp.version>4.12.0</okhttp.version>
        <xstream.version>1.4.21</xstream.version>
        <poi.version>5.3.0</poi.version>
        <pagehelper.version>6.1.0</pagehelper.version>
        <zxing.version>3.5.3</zxing.version>
        <freemarker.version>2.3.33</freemarker.version>
        <bouncycastle.version>1.79</bouncycastle.version>
        <jsoup.version>1.18.3</jsoup.version>
        <jwt.version>4.5.0</jwt.version>
        <feign.version>8.18.0</feign.version>
        <feign.openfeign.version>13.5</feign.openfeign.version>
    </properties>

    <!-- ==================== 依赖版本管理 ==================== -->
    <dependencyManagement>
        <dependencies>
            <!-- 强制使用指定版本的 Jackson,覆盖传递依赖 -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${jackson.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!-- ==================== 公共构建配置 ==================== -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.11.0</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>UTF-8</encoding>
                    <fork>true</fork>
                    <meminitial>128m</meminitial>
                    <maxmem>512m</maxmem>
                    <compilerArgs>
                        <arg>-J-Dfile.encoding=UTF-8</arg>
                        <arg>-J-Duser.language=zh</arg>
                        <arg>-J-Dsun.stdout.encoding=UTF-8</arg>
                        <arg>-J-Dsun.stderr.encoding=UTF-8</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.5.2</version>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                    <skip>true</skip>
                    <skipTests>true</skipTests>
                    <argLine>-Dfile.encoding=UTF-8</argLine>
                </configuration>
            </plugin>
            <!-- 资源文件处理插件，确保使用 UTF-8 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.3.1</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-archetype-plugin</artifactId>
                <version>3.2.1</version>
            </plugin>
            <!-- 源码插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.3.1</version>
                <configuration>
                    <attach>true</attach>
                    <encoding>UTF-8</encoding>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Javadoc 插件，确保使用 UTF-8 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>3.6.3</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <charset>UTF-8</charset>
                    <docencoding>UTF-8</docencoding>
                </configuration>
            </plugin>
            <!-- 环境版本强制检查插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>3.4.1</version>
                <executions>
                    <execution>
                        <id>enforce-versions</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <requireMavenVersion>
                                    <version>3.9.0</version>
                                    <message>本项目需要 Maven 3.9.0 或更高版本！</message>
                                </requireMavenVersion>
                                <requireJavaVersion>
                                    <version>21</version>
                                    <message>本项目需要 Java 21 或更高版本！</message>
                                </requireJavaVersion>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <!-- ==================== 发布配置 ==================== -->
    <distributionManagement>
        <repository>
            <id>mini-releases</id>
            <name>正式库</name>
            <url>http://maven.aquke.com/nexus/content/repositories/releases/</url>
        </repository>
        <snapshotRepository>
            <id>mini-snapshots</id>
            <name>快照库</name>
            <url>http://maven.aquke.com/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

</project>
