<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<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>

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

    <artifactId>continew-admin-webapi</artifactId>
    <packaging>jar</packaging>

    <name>${project.artifactId}</name>
    <description>API 模块（存放 Controller 层代码，打包部署的模块）</description>

    <properties>
        <!-- ### 打包配置相关 ### -->
        <!-- 启动类 -->
        <main-class>top.charles7c.cnadmin.ContiNewAdminApplication</main-class>
        <!-- 程序 jar 输出目录 -->
        <bin-path>bin</bin-path>
        <!-- 配置文件输出目录 -->
        <config-path>config</config-path>
        <!-- 依赖 jar 输出目录 -->
        <lib-path>lib</lib-path>
    </properties>

    <dependencies>
        <!-- Liquibase（用于管理数据库版本，跟踪、管理和应用数据库变化） -->
        <dependency>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-core</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- 系统监控模块（存放系统监控模块相关功能，例如：日志管理、服务监控等） -->
        <dependency>
            <groupId>top.charles7c</groupId>
            <artifactId>continew-admin-monitor</artifactId>
        </dependency>

        <!-- 系统工具模块（存放系统工具模块相关功能，例如：代码生成、文件管理等） -->
        <dependency>
            <groupId>top.charles7c</groupId>
            <artifactId>continew-admin-tool</artifactId>
        </dependency>
    </dependencies>

    <build>
        <!-- 设置构建的 jar 包名 -->
        <finalName>${project.parent.name}</finalName>
        <plugins>
            <!-- 单元测试配置插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <!-- 跳过单元测试 -->
                    <skip>true</skip>
                </configuration>
            </plugin>
            <!-- Maven 打包插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <!-- 排除配置文件 -->
                    <excludes>
                        <exclude>${config-path}/</exclude>
                    </excludes>
                    <archive>
                        <manifest>
                            <mainClass>${main-class}</mainClass>
                            <!-- 为 MANIFEST.MF 中的 Class-Path 加入依赖 jar 目录前缀 -->
                            <classpathPrefix>../${lib-path}/</classpathPrefix>
                            <addClasspath>true</addClasspath>
                            <!-- jar 包不包含唯一版本标识 -->
                            <useUniqueVersions>false</useUniqueVersions>
                        </manifest>
                        <manifestEntries>
                            <!--为 MANIFEST.MF 中的 Class-Path 加入配置文件目录前缀 -->
                            <Class-Path>../${config-path}/</Class-Path>
                        </manifestEntries>
                    </archive>
                    <outputDirectory>${project.build.directory}/app/${bin-path}</outputDirectory>
                </configuration>
            </plugin>
            <!-- 拷贝依赖 jar -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/app/${lib-path}</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- 拷贝配置文件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>src/main/resources</directory>
                                    <includes>
                                        <include>${config-path}/</include>
                                    </includes>
                                </resource>
                            </resources>
                            <outputDirectory>${project.build.directory}/app</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>