<?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>cn.sunxiansheng</groupId>
    <artifactId>sunrays-dependencies</artifactId>
    <version>0.0.6</version>

    <!-- 项目名 -->
    <name>${project.groupId}:${project.artifactId}</name>
    <!-- 简单描述 -->
    <description>统一管理依赖，本项目的所有模块都要直接或者间接的继承该模块</description>
    <!-- 开源地址 -->
    <url>https://gitee.com/qyxinhua_0/sunrays-framework/tree/master/sunrays-dependencies</url>

    <!-- <packaging>pom</packaging> 被设置为 pom 时，这表示该项目是一个 管理依赖的项目 或 聚合项目 -->
    <packaging>pom</packaging>

    <properties>
        <!-- 指定编译版本 -->
        <java.version>1.8</java.version>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!-- 指定版本号 -->
        <lombok.version>1.18.16</lombok.version>
        <spring-boot.version>2.4.2</spring-boot.version>
        <spring-cloud.version>2020.0.1</spring-cloud.version>
        <spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
        <druid.version>1.2.8</druid.version>
        <mybatis-plus.version>3.5.3</mybatis-plus.version>
        <transmittable-thread-local.version>2.12.4</transmittable-thread-local.version>
        <mapstruct.version>1.4.2.Final</mapstruct.version>
        <minio.version>8.5.14</minio.version>
        <okhttp.version>4.11.0</okhttp.version>
        <javaparser.version>3.25.4</javaparser.version>
        <servlet-api.version>2.5</servlet-api.version>
        <java-dotenv.version>5.2.2</java-dotenv.version>
    </properties>

    <!-- 统一指定版本 -->
    <dependencyManagement>
        <dependencies>
            <!-- Spring Boot -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <!-- 下面两个配置表示导入spring-boot-dependencies的dependencyManagement的版本 -->
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- Spring Cloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--  Spring Cloud Alibaba -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- druid连接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <!-- mybatis-plus -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus.version}</version>
            </dependency>
            <!-- transmittable-thread-local -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>transmittable-thread-local</artifactId>
                <version>${transmittable-thread-local.version}</version>
            </dependency>
            <!-- mapstruct -->
            <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>
            <!-- minio -->
            <dependency>
                <groupId>io.minio</groupId>
                <artifactId>minio</artifactId>
                <version>${minio.version}</version>
            </dependency>
            <!-- okhttp必须升级到这个版本 -->
            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
                <version>${okhttp.version}</version>
            </dependency>
            <!-- javaparser解析java代码，读取指定方法 -->
            <dependency>
                <groupId>com.github.javaparser</groupId>
                <artifactId>javaparser-core</artifactId>
                <version>${javaparser.version}</version>
            </dependency>
            <!-- SpringBoot2.4.2对应的Servlet的API -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
                <version>${servlet-api.version}</version>
            </dependency>
            <!-- 可以使用.env文件提前加载配置，确保数据安全 -->
            <dependency>
                <groupId>io.github.cdimascio</groupId>
                <artifactId>java-dotenv</artifactId>
                <version>${java-dotenv.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!--指定通用依赖-->
    <dependencies>
        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!-- mapstruct -->
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct-processor</artifactId>
        </dependency>
        <!-- commons-lang3 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <!-- gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </dependency>
    </dependencies>

    <!-- 阿里云仓库，在父模块中配置仓库，可以使得所有子模块自动继承这个配置，这样在多模块项目中，每个模块无需单独配置仓库信息，便于管理和维护。 -->
    <repositories>
        <repository>
            <id>central</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <layout>default</layout>
            <!-- 是否开启发布版构件下载 -->
            <releases>
                <enabled>true</enabled>
            </releases>
            <!-- 是否开启快照版构件下载 -->
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <!-- 发布到Maven中央仓库需要的配置1 -->
    <!-- 开源协议 -->
    <licenses>
        <license>
            <name>MIT License</name>
            <url>http://www.opensource.org/licenses/mit-license.php</url>
        </license>
    </licenses>

    <!-- 开发者配置 -->
    <developers>
        <developer>
            <name>孙显圣</name>
            <email>sun021208@126.com</email>
            <!-- url是个人主页的地址 -->
            <url>https://sunweb.blog.csdn.net/</url>
        </developer>
    </developers>

    <!-- 源码仓库相关配置 -->
    <scm>
        <!-- 只读连接 -->
        <connection>scm:git:git://gitee.com/qyxinhua_0/sunrays-framework.git</connection>
        <!-- 开发者连接 (SSH) -->
        <developerConnection>scm:git:git@gitee.com:qyxinhua_0/sunrays-framework.git</developerConnection>
        <!-- 仓库浏览 URL -->
        <url>https://gitee.com/qyxinhua_0/sunrays-framework</url>
    </scm>
    <!-- 发布到Maven中央仓库需要的配置1 -->

    <!-- 构建项目通用配置 -->
    <build>
        <!-- maven的编译插件（配置注解处理器） -->
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <!-- maven编译插件版本号 -->
                <version>3.8.1</version>
                <configuration>
                    <!-- 配置注解处理器（比如Lombok和MapStruct） -->
                    <annotationProcessorPaths>
                        <!-- Lombok 注解处理器 -->
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${lombok.version}</version>
                        </path>
                        <!-- MapStruct 注解处理器 -->
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>${mapstruct.version}</version>
                        </path>
                        <!-- 只要配置了annotationProcessorPaths就必须配置，否则自定义starter的yml没有提示！！！ -->
                        <path>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-configuration-processor</artifactId>
                            <version>${spring-boot.version}</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
            <!--多模块Maven项目统一修改版本号-->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>2.8.1</version>
                <configuration>
                    <generateBackupPoms>false</generateBackupPoms>
                </configuration>
            </plugin>

            <!-- 发布到Maven中央仓库需要的配置2 -->
            <!-- central发布插件（需要配置！！！） -->
            <plugin>
                <groupId>org.sonatype.central</groupId>
                <artifactId>central-publishing-maven-plugin</artifactId>
                <version>0.5.0</version>
                <extensions>true</extensions>
                <configuration>
                    <!-- 这里的id是跟settings.xml中对应的！ -->
                    <publishingServerId>sonatype</publishingServerId>
                    <checksums>required</checksums>
                    <!-- 发布信息（最好自定义一下） -->
                    <deploymentName>Sunrays-Framework 企业级Java脚手架</deploymentName>
                </configuration>
            </plugin>

            <!-- 下面几个都是通用的 -->
            <!-- maven-source-plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- maven-javadoc-plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>3.4.1</version>
                <!-- 支持三个自定义标签 -->
                <configuration>
                    <additionalOptions>
                        <arg>-tag</arg>
                        <arg>Author:a:"Author"</arg>
                        <arg>-tag</arg>
                        <arg>Create:a:"Create"</arg>
                        <arg>-tag</arg>
                        <arg>Version:a:"Version"</arg>
                    </additionalOptions>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- maven-gpg-plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-gpg-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <id>sign-artifacts</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <resources>
            <!-- 配置资源文件，这里主要是指 src/main/resources 目录 -->
            <resource>
                <directory>src/main/resources</directory>
                <!-- 配置了这个，则 Maven 的环境变量就可以填充到 application-xxx.yml 中（用 $ 符号取），可用于环境隔离 -->
                <filtering>true</filtering>
            </resource>
            <!-- 可选：如果项目中有需要打包的 XML 文件，可以添加这部分配置 -->
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
        <!-- 统一指定打包插件版本（与SpringBoot一致） -->
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>${spring-boot.version}</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <!-- maven的环境变量env-flag的值为具体的值 -->
    <profiles>
        <!-- 开发 -->
        <profile>
            <!-- id（不重复即可） -->
            <id>dev</id>
            <properties>
                <env-flag>dev</env-flag>
            </properties>
            <!-- 默认为dev -->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!-- 测试 -->
        <profile>
            <id>test</id>
            <properties>
                <env-flag>test</env-flag>
            </properties>
        </profile>
        <!-- 生产 -->
        <profile>
            <id>prod</id>
            <properties>
                <env-flag>prod</env-flag>
            </properties>
        </profile>
    </profiles>
</project>