<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.xiyu</groupId>
        <artifactId>xiyu-components</artifactId>
        <version>4.1.0</version>
    </parent>
    <groupId>io.github.gucangran</groupId>
    <artifactId>xiyu-spring-boot-starter</artifactId>
    <version>4.1.0</version>
    <name>xiyu-spring-boot-starter</name>
    <description>xiyu-spring-boot-starter</description>
    <url>https://xiyu.com</url>
    <packaging>jar</packaging>
    <!-- 协议信息标签，必须要有 -->
    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <developers>
        <developer>
            <id>gucangran</id>
            <name>gucangran</name>
            <email>gucangran@shen.com</email>
            <organization>xiyu company ltd.</organization>
            <organizationUrl>http://xiyu.cn</organizationUrl>
            <roles>
                <role>Project Developer</role>
            </roles>
        </developer>
    </developers>
    <!-- 仓库信息，必须要有，改成你自己的 -->
    <scm>
        <url>https://github.com/GuCangRan/rgutil</url>
    </scm>
    <!-- issue管理配置，改成你自己的 -->
    <!-- 可以使用 <issueManagement/> 闭合标签，表示忽略该项配置，该标签必须要有，不能删除 -->
    <issueManagement>
        <system>GitHub</system>
        <url>https://github.com/GuCangRan/rgutil/issues</url>
    </issueManagement>

    <properties>
        <!-- project java version -->
        <java.version>25</java.version>
        <!-- project encoding -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <!-- project dependency package version -->
        <spring-boot.version>3.5.8</spring-boot.version>
        <netty-socketio.version>2.0.13</netty-socketio.version>

        <!--框架-->
        <spring-dev.version>3.5.8</spring-dev.version>
        <spring-boot.version>${spring-dev.version}</spring-boot.version>
        <spring-boot-security.version>${spring-dev.version}</spring-boot-security.version>
        <spring-boot-maven-plugin.version>${spring-dev.version}</spring-boot-maven-plugin.version>
        <!--<spring-cloud.version>2022.0.4</spring-cloud.version>-->
        <spring-cloud-dependencies.version>2025.0.0</spring-cloud-dependencies.version>
        <!--https://github.com/alibaba/spring-cloud-alibaba/releases-->
        <spring-cloud-alibaba-dependencies.version>2023.0.3.3</spring-cloud-alibaba-dependencies.version>
        <spring-cloud-starter.version>4.3.0</spring-cloud-starter.version>
        <springdoc.version>2.8.13</springdoc.version>
        <!--<openfeign.version>4.3.0</openfeign.version>-->
        <!--<feign-okhttp.version>13.5</feign-okhttp.version>-->
        <httpclient.version>4.5.14</httpclient.version>
        <httpclient5.version>5.5</httpclient5.version>
        <httpcore.version>4.4.16</httpcore.version>
        <httpcore5.version>5.3.4</httpcore5.version>

        <!--数据库-->
        <mybatis-plus.version>3.5.14</mybatis-plus.version>
        <mybatis-plus-jsqlparser.version>3.5.14</mybatis-plus-jsqlparser.version>
        <mybatis-plus.dynamic.version>3.6.1</mybatis-plus.dynamic.version>
        <mybatis.version>3.5.19</mybatis.version>
        <mybatis-starter.version>3.0.5</mybatis-starter.version>
        <p6spy.version>3.9.1</p6spy.version>
        <mysql.version>9.5.0</mysql.version>
        <postgresql.version>42.7.8</postgresql.version>
        <kingbase8.version>8.6.0</kingbase8.version>

        <!--缓存-->
        <caffeine.version>3.2.0</caffeine.version>
        <jedis.version>4.3.0-m1</jedis.version>
        <redisson.version>3.52.0</redisson.version>
        <guava.version>33.5.0-jre</guava.version>

        <!--组件-->
        <nacos.version>3.1.0</nacos.version>
        <netty.version>4.2.6.Final</netty.version>
        <jasypt.version>3.0.5</jasypt.version>
        <hutool.version>5.8.41</hutool.version>
        <TinyPinyin.version>2.0.3.RELEASE</TinyPinyin.version>
        <jwt.version>4.2.1</jwt.version>
        <mapstruct.version>1.6.3</mapstruct.version>
        <velocity.version>2.3</velocity.version>
        <poi.version>5.3.0</poi.version>
        <okhttp.version>4.10.0</okhttp.version>
        <disruptor.version>4.0.0</disruptor.version>
        <fastexcel.version>1.2.0</fastexcel.version>
        <elastic.version>9.2.1</elastic.version>
        <jasypt.version>3.0.5</jasypt.version>
        <resilience4j.version>2.3.0</resilience4j.version>
        <ip2region.version>2.7.0</ip2region.version>

        <!--oss-->
        <mino.version>8.6.0</mino.version>

        <!--json-->
        <jackson.version>2.20.0</jackson.version>
        <jackson-annotations.version>2.20</jackson-annotations.version>
        <!--<jackson-databind.version>2.20.0</jackson-databind.version>-->
        <dom4j.version>2.1.4</dom4j.version>
        <jakarta.xml.version>4.0.0</jakarta.xml.version>
        <jakarta.json.version>2.0.1</jakarta.json.version>
        <fastjson.version>2.0.52</fastjson.version>
        <fasterxml.version>2.13.0</fasterxml.version>
        <snakeyaml.version>2.3</snakeyaml.version>
        <feign-okhttp.version>13.5</feign-okhttp.version>

        <!--工具-->
        <commons-collections.version>3.2.2</commons-collections.version>
        <commons-collections4.version>4.5.0-M1</commons-collections4.version>
        <commons-text.version>1.12.0</commons-text.version>
        <commons-io.version>2.18.0</commons-io.version>
        <commons-lang3.version>3.17.0</commons-lang3.version>
        <commons-exec.version>1.4.0</commons-exec.version>
        <commons-pool2.version>2.12.0</commons-pool2.version>
        <commons-codec.version>1.17.0</commons-codec.version>
        <commons-compress.version>1.27.1</commons-compress.version>
        <commons-fileupload.version>1.5</commons-fileupload.version>
        <commons-jexl3.version>3.4.0</commons-jexl3.version>
        <commons-csv.version>1.14.1</commons-csv.version>

        <velocity.version>2.3</velocity.version>
        <javax.xml.version>2.3.1</javax.xml.version>
        <com.sun.xml.version>4.0.1</com.sun.xml.version>


        <!-- project dependency plugin version -->
        <apache-maven-plugins.groupId>org.apache.maven.plugins</apache-maven-plugins.groupId>
        <maven-compiler-plugin.version>3.14.0</maven-compiler-plugin.version>
        <maven-source-plugin.version>3.3.1</maven-source-plugin.version>
        <maven-javadoc-plugin.version>3.11.2</maven-javadoc-plugin.version>
        <maven-gpg-plugin.version>3.2.7</maven-gpg-plugin.version>
        <license-maven-plugin.version>5.0.0</license-maven-plugin.version>
        <central-publishing-maven-plugin.version>0.9.0</central-publishing-maven-plugin.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-dev.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--继承SpringCloud-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud-dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!--继承SpringBoot-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba-dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.xiyu</groupId>
                <artifactId>xiyu-parent</artifactId>
                <version>${project.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
            <version>${spring-dev.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
            <version>${springdoc.version}</version>
        </dependency>
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>${jwt.version}</version>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>${hutool.version}</version>
        </dependency>

        <dependency>
            <groupId>jakarta.xml.bind</groupId>
            <artifactId>jakarta.xml.bind-api</artifactId>
            <version>${jakarta.xml.version}</version>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>${guava.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-extension</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-jsqlparser</artifactId>
            <version>${mybatis-plus-jsqlparser.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-jdk8</artifactId>
            <version>${mapstruct.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>${mapstruct.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
            <version>${mapstruct.version}</version>
        </dependency>
        <!--增加Spring cloud 微服务相关依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>${spring-cloud-alibaba-dependencies.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>${spring-cloud-alibaba-dependencies.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
            <version>${spring-cloud-starter.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>${spring-cloud-starter.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>${spring-cloud-starter.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
            <version>${spring-cloud-starter.version}</version>
        </dependency>
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-okhttp</artifactId>
            <version>${feign-okhttp.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>${spring-dev.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring-boot-starter-logging</artifactId>
                    <groupId>org.springframework.boot</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
            <version>${spring-dev.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>log4j-slf4j2-impl</artifactId>
                    <groupId>org.apache.logging.log4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
            <version>${spring-dev.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
            <version>${lombok.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>${spring-dev.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>io.lettuce</groupId>
                    <artifactId>lettuce-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>${redisson.version}</version>
        </dependency>
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson-spring-boot-starter</artifactId>
            <version>${redisson.version}</version>
        </dependency>
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson-spring-data-27</artifactId>
            <version>${redisson.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>${spring-dev.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.github.ben-manes.caffeine</groupId>
            <artifactId>caffeine</artifactId>
            <version>${caffeine.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>${javax.xml.version}</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>${com.sun.xml.version}</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>${com.sun.xml.version}</version>
        </dependency>
        <dependency>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
            <version>${snakeyaml.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <version>${commons-collections4.version}</version>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>${commons-io.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>${commons-lang3.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>${commons-codec.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-compress</artifactId>
            <version>${commons-compress.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-jexl3</artifactId>
            <version>${commons-jexl3.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>commons-logging</artifactId>
                    <groupId>commons-logging</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.14</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.14</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents.client5</groupId>
            <artifactId>httpclient5</artifactId>
            <version>5.1.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents.core5</groupId>
            <artifactId>httpcore5</artifactId>
            <version>5.3.4</version>
        </dependency>
    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>

        <plugins>
            <!-- 编译插件，插件是必须的 -->
            <!-- compiler plugin -->
            <!-- https://central.sonatype.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->
            <plugin>
                <groupId>${apache-maven-plugins.groupId}</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler-plugin.version}</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${lombok.version}</version>
                        </path>
                        <path>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-configuration-processor</artifactId>
                            <version>${spring-boot.version}</version>
                        </path>
                    </annotationProcessorPaths>
                    <compilerArgs>
                        <arg>-parameters</arg>
                    </compilerArgs>
                </configuration>
            </plugin>

            <!-- jar源码包生成插件，插件是必须的 -->
            <!-- build source package plugin -->
            <!-- https://central.sonatype.com/artifact/org.apache.maven.plugins/maven-source-plugin -->
            <plugin>
                <groupId>${apache-maven-plugins.groupId}</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>${maven-source-plugin.version}</version>
                <configuration>
                    <!-- 源码包随着项目打成的jar包安装到本地仓库或者私服、公服 -->
                    <attach>true</attach>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                        <configuration>
                            <classifier>sources</classifier>
                        </configuration>
                    </execution>
                    <!-- 如果有多个execution，另一个应设置不同classifier -->
                    <execution>
                        <id>another-source-execution</id>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                        <configuration>
                            <classifier>extra-sources</classifier>
                        </configuration>
                    </execution>
                    <!--                    <execution>-->
                    <!--                        <phase>package</phase>-->
                    <!--                        <goals>-->
                    <!--                            <goal>jar-no-fork</goal>-->
                    <!--                        </goals>-->
                    <!--                        <configuration>-->
                    <!--                            <classifier>sources</classifier>-->
                    <!--                        </configuration>-->
                    <!--                    </execution>-->
                </executions>
            </plugin>

            <!-- javadoc生成插件，插件是必须的 -->
            <!-- gen javadoc plugin -->
            <!-- https://central.sonatype.com/artifact/org.apache.maven.plugins/maven-javadoc-plugin -->
            <plugin>
                <groupId>${apache-maven-plugins.groupId}</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>${maven-javadoc-plugin.version}</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- 禁用严格语法检测 -->
                    <doclint>none</doclint>
                </configuration>
            </plugin>

            <!-- GPG签名插件，插件是必须的 -->
            <!-- gpg sign plugin -->
            <!-- https://central.sonatype.com/artifact/org.apache.maven.plugins/maven-gpg-plugin -->
            <plugin>
                <groupId>${apache-maven-plugins.groupId}</groupId>
                <artifactId>maven-gpg-plugin</artifactId>
                <version>${maven-gpg-plugin.version}</version>
                <configuration>
                    <gpgArguments>
                        <arg>--pinentry-mode</arg>
                        <arg>loopback</arg>
                    </gpgArguments>
                </configuration>
                <executions>
                    <execution>
                        <id>sign-artifacts</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- 发布到maven仓库中心插件，插件是必须的 -->
            <!-- publishing to central server plugin -->
            <!-- https://central.sonatype.com/artifact/org.sonatype.central/central-publishing-maven-plugin -->
            <plugin>
                <groupId>org.sonatype.central</groupId>
                <artifactId>central-publishing-maven-plugin</artifactId>
                <version>${central-publishing-maven-plugin.version}</version>
                <extensions>true</extensions>
                <configuration>
                    <!-- 注意：这类必须要和Maven配置环境中的server id对应上 -->
                    <publishingServerId>central</publishingServerId>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <!-- 部署管理配置，基本不需要修改，原来是必须要配的 -->
    <!-- 新的发布方式已经不需要该配置了，可以删掉 -->
    <distributionManagement>
        <snapshotRepository>
            <id>ossrh</id>
            <name>OSS Snapshots Repositories</name>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
        </snapshotRepository>
        <repository>
            <id>ossrh</id>
            <name>OSS Staging Repositories</name>
            <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>
</project>
