<?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>top.charles7c.continew</groupId>
        <artifactId>continew-starter</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>

    <groupId>top.charles7c.continew</groupId>
    <artifactId>continew-admin</artifactId>
    <version>${revision}</version>
    <packaging>pom</packaging>

    <name>${project.artifactId}</name>
    <description>ContiNew Admin 中后台管理框架/脚手架,Continue New Admin,持续以最新流行技术栈构建,拥抱变化,迭代优化。</description>
    <url>https://github.com/Charles7c/continew-admin</url>

    <modules>
        <module>continew-admin-webapi</module>
        <module>continew-admin-monitor</module>
        <module>continew-admin-system</module>
        <module>continew-admin-tool</module>
        <module>continew-admin-common</module>
    </modules>

    <properties>
        <revision>2.1.0-SNAPSHOT</revision>
        <sa-token.version>1.37.0</sa-token.version>

        <!-- ### 持久层相关 ### -->
        <mybatis-plus.version>3.5.4</mybatis-plus.version>
        <dynamic-ds.version>4.2.0</dynamic-ds.version>
        <p6spy.version>3.9.1</p6spy.version>

        <!-- ### 工具库相关 ### -->
        <sms4j.version>3.0.4</sms4j.version>
        <justauth.version>1.16.5</justauth.version>
        <easyexcel.version>3.3.2</easyexcel.version>
        <ip2region.version>3.1.5.1</ip2region.version>
        <knife4j.version>4.3.0</knife4j.version>
        <redisson.version>3.24.3</redisson.version>
        <easy-captcha.version>1.6.2</easy-captcha.version>
        <hutool.version>5.8.22</hutool.version>

        <!-- Maven Plugin Versions  -->
        <spotless.version>2.40.0</spotless.version>
    </properties>

    <!-- 全局依赖版本管理 -->
    <dependencyManagement>
        <dependencies>
            <!-- ################ Sa-Token 相关 ################ -->
            <!-- Sa-Token(轻量级 Java 权限认证框架,让鉴权变得简单、优雅) -->
            <dependency>
                <groupId>cn.dev33</groupId>
                <artifactId>sa-token-spring-boot3-starter</artifactId>
                <version>${sa-token.version}</version>
            </dependency>

            <!-- Sa-Token 整合 JWT -->
            <dependency>
                <groupId>cn.dev33</groupId>
                <artifactId>sa-token-jwt</artifactId>
                <version>${sa-token.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>cn.hutool</groupId>
                        <artifactId>hutool-jwt</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- ################ 持久层相关 ################ -->
            <!-- MyBatis Plus(MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率) -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
                <version>${mybatis-plus.version}</version>
            </dependency>

            <!-- Dynamic Datasource(基于 Spring Boot 的快速集成多数据源的启动器) -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
                <version>${dynamic-ds.version}</version>
            </dependency>

            <!-- P6Spy(SQL 性能分析组件) -->
            <dependency>
                <groupId>p6spy</groupId>
                <artifactId>p6spy</artifactId>
                <version>${p6spy.version}</version>
            </dependency>

            <!-- ################ 工具库相关 ################ -->
            <!-- SMS4J(短信聚合框架,轻松集成多家短信服务,解决接入多个短信 SDK 的繁琐流程) -->
            <dependency>
                <groupId>org.dromara.sms4j</groupId>
                <artifactId>sms4j-spring-boot-starter</artifactId>
                <version>${sms4j.version}</version>
            </dependency>

            <!-- Just Auth(开箱即用的整合第三方登录的开源组件,脱离繁琐的第三方登录 SDK,让登录变得 So easy!) -->
            <dependency>
                <groupId>com.xkcoding.justauth</groupId>
                <artifactId>justauth-spring-boot-starter</artifactId>
                <version>1.4.0</version>
                <exclusions>
                    <exclusion>
                        <groupId>cn.hutool</groupId>
                        <artifactId>hutool-core</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>me.zhyd.oauth</groupId>
                        <artifactId>JustAuth</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>me.zhyd.oauth</groupId>
                <artifactId>JustAuth</artifactId>
                <version>${justauth.version}</version>
            </dependency>

            <!-- Easy Excel(一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具) -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>easyexcel</artifactId>
                <version>${easyexcel.version}</version>
            </dependency>

            <!-- 第三方封装 Ip2region(离线 IP 数据管理框架和定位库,支持亿级别的数据段,10 微秒级别的查询性能,提供了许多主流编程语言的 xdb 数据管理引擎的实现) -->
            <dependency>
                <groupId>net.dreamlu</groupId>
                <artifactId>mica-ip2region</artifactId>
                <version>${ip2region.version}</version>
            </dependency>

            <!-- Knife4j(前身是 swagger-bootstrap-ui,集 Swagger2 和 OpenAPI3 为一体的增强解决方案) -->
            <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>knife4j-dependencies</artifactId>
                <version>${knife4j.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <!-- Redisson(不仅仅是一个 Redis Java 客户端) -->
            <dependency>
                <groupId>org.redisson</groupId>
                <artifactId>redisson-spring-boot-starter</artifactId>
                <version>${redisson.version}</version>
            </dependency>

            <!-- Easy Captcha(Java 图形验证码,支持 gif、中文、算术等类型,可用于 Java Web、JavaSE 等项目) -->
            <dependency>
                <groupId>com.github.whvcse</groupId>
                <artifactId>easy-captcha</artifactId>
                <version>${easy-captcha.version}</version>
            </dependency>

            <!-- Hutool(小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”) -->
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>${hutool.version}</version>
            </dependency>

            <!-- ################ 本项目子模块相关 ################ -->
            <!-- API 模块(存放 Controller 层代码,打包部署的模块) -->
            <dependency>
                <groupId>top.charles7c.continew</groupId>
                <artifactId>continew-admin-webapi</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- 系统监控模块(存放系统监控模块相关功能,例如:日志管理、服务监控等) -->
            <dependency>
                <groupId>top.charles7c.continew</groupId>
                <artifactId>continew-admin-monitor</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- 系统管理模块(存放系统管理模块相关功能,例如:部门管理、角色管理、用户管理等) -->
            <dependency>
                <groupId>top.charles7c.continew</groupId>
                <artifactId>continew-admin-system</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- 系统工具模块(存放系统工具模块相关功能,例如:代码生成、文件管理等) -->
            <dependency>
                <groupId>top.charles7c.continew</groupId>
                <artifactId>continew-admin-tool</artifactId>
                <version>${project.version}</version>
            </dependency>

            <!-- 公共模块(存放公共工具类,公共配置等) -->
            <dependency>
                <groupId>top.charles7c.continew</groupId>
                <artifactId>continew-admin-common</artifactId>
                <version>${project.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!-- Lombok(在 Java 开发过程中用注解的方式,简化了 JavaBean 的编写,避免了冗余和样板式代码,让编写的类更加简洁) -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional> <!-- 表示依赖不会被传递 -->
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- 代码等格式化插件 -->
            <plugin>
                <groupId>com.diffplug.spotless</groupId>
                <artifactId>spotless-maven-plugin</artifactId>
                <version>${spotless.version}</version>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>apply</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <java>
                        <importOrder>
                            <order>java,jakarta,lombok,io,org,com,cn,top.charles7c,</order>
                        </importOrder>
                        <removeUnusedImports/>
                        <eclipse>
                            <file>code-style/code-formatter.xml</file>
                        </eclipse>
                        <licenseHeader>
                            <file>code-style/license-header</file>
                        </licenseHeader>
                    </java>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <!-- 远程仓库配置:阿里云 Maven 中央仓库(公共代理仓库,Central 仓和 JCenter 仓的聚合仓,帮助研发人员提高研发生产效率,使用阿里云 Maven 中央仓库作为下载源,速度更快更稳定) -->
    <repositories>
        <repository>
            <id>public</id>
            <name>aliyun maven</name>
            <url>https://maven.aliyun.com/repository/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
        <repository>
            <id>sonatype-nexus-snapshots</id>
            <name>Sonatype Nexus Snapshots</name>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
            <snapshots>
                <updatePolicy>always</updatePolicy>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>public</id>
            <name>aliyun maven</name>
            <url>https://maven.aliyun.com/repository/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
</project>