<?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 为 ContiNew Starter(Continue New Starter),
        是一种特殊类型的 Spring Boot Starter,其作用与常规的 Starter 类似,它可以帮助开发人员快速集成常用的第三方库或工具到 Spring 应用程序中。
        ContiNew Starter 包含了一系列经过优化和配置的依赖包(如 MyBatis-Plus、SaToken),
        可轻松集成到应用中,从而避免开发人员手动引入依赖的麻烦,为 Spring Boot 项目的灵活快速构建提供支持。
    -->
    <parent>
        <groupId>top.charles7c.continew</groupId>
        <artifactId>continew-starter</artifactId>
        <version>1.0.1-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.2.0-SNAPSHOT</revision>
        <!-- Maven Plugin Versions -->
        <spotless.version>2.40.0</spotless.version>
    </properties>

    <!-- 全局依赖版本管理 -->
    <dependencyManagement>
        <dependencies>
            <!-- 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>