<?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>com.sankcrm.erp</groupId>
    <artifactId>erp-dependencies</artifactId>
    <version>3.4.11-OAUTH-4-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>21</java.version>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
        <spring.boot.version>3.4.11</spring.boot.version>
        <querydsl.version>6.10.1</querydsl.version>
        <lombok.version>1.18.34</lombok.version>

        <!-- Third part -->
        <power.mock.version>2.0.9</power.mock.version>
        <orika.core.version>1.5.4</orika.core.version>
        <disruptor.version>3.4.2</disruptor.version>
        <!--        <hibernate.types.version>2.14.1</hibernate.types.version>-->
        <!-- End third part -->
        <apt.version>1.0.0</apt.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.sankcrm.erp</groupId>
            <artifactId>erp-apt</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-junit4</artifactId>
            <version>${power.mock.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito2</artifactId>
            <version>${power.mock.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <!-- 项目内部依赖 -->
            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-common</artifactId>
                <version>3.2.2</version>
            </dependency>
            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-domain</artifactId>
                <version>3.1.1</version>
            </dependency>
            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-mvc</artifactId>
                <version>3.2.0</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-bus</artifactId>
                <version>3.1.0</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-bus-open</artifactId>
                <version>3.0.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-task</artifactId>
                <version>3.1.0</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-kafka-consumer</artifactId>
                <version>3.0.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-kafka-outbox</artifactId>
                <version>3.0.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-area-sdk</artifactId>
                <version>3.0.0</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-area</artifactId>
                <version>3.0.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-unionpay-sdk</artifactId>
                <version>3.0.0</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-unionpay</artifactId>
                <version>3.0.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-auth</artifactId>
                <version>3.1.7-OAUTH-4-SNAPSHOT</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-auth-sdk</artifactId>
                <version>3.2.4-OAUTH-4-SNAPSHOT</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-bindcard</artifactId>
                <version>2.0.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-bindcard-sdk</artifactId>
                <version>2.0.0</version>
            </dependency>


            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-file-upload</artifactId>
                <version>3.1.0</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-financial-sdk</artifactId>
                <version>3.0.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-financial</artifactId>
                <version>3.0.2</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-dataview-sdk</artifactId>
                <version>2.1.2</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-dataview</artifactId>
                <version>2.1.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-contract</artifactId>
                <version>1.4.3</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-contract-sdk</artifactId>
                <version>1.2.4</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-contract-local</artifactId>
                <version>1.0.1</version>
            </dependency>
            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-contract-jzq</artifactId>
                <version>1.3.2</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-order-engine</artifactId>
                <version>2.1.1</version>
            </dependency>
            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-order-card</artifactId>
                <version>2.0.1</version>
            </dependency>
            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-order-sup01</artifactId>
                <version>2.0.0</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-role-sdk</artifactId>
                <version>1.1.0</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-role</artifactId>
                <version>1.1.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-role-dataview-sdk</artifactId>
                <version>1.1.0</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-role-dataview</artifactId>
                <version>1.1.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-industry</artifactId>
                <version>1.0.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-rtc</artifactId>
                <version>1.1.2</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-rtc-zego</artifactId>
                <version>1.0.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-storage</artifactId>
                <version>1.1.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-storage-obs</artifactId>
                <version>1.0.0</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-notice-sdk</artifactId>
                <version>1.1.0</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-notice</artifactId>
                <version>1.2.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-notice-ali</artifactId>
                <version>1.1.0</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-shortlink</artifactId>
                <version>1.1.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-shortlink-sdk</artifactId>
                <version>1.0.0</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-bank</artifactId>
                <version>1.1.5</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-bank-smb</artifactId>
                <version>1.1.5</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-bank-xw</artifactId>
                <version>1.0.6</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>notary-association</artifactId>
                <version>1.0.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>notary-association-impl</artifactId>
                <version>1.0.0</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-export</artifactId>
                <version>1.1.0</version>
            </dependency>
            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-export-sdk</artifactId>
                <version>1.1.1</version>
            </dependency>

            <dependency>
                <groupId>com.sankcrm.erp</groupId>
                <artifactId>erp-apt</artifactId>
                <version>${apt.version}</version>
                <scope>provided</scope>
                <exclusions>
                    <exclusion>
                        <groupId>com.sankcrm.erp</groupId>
                        <artifactId>erp-domain</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>ma.glasnost.orika</groupId>
                <artifactId>orika-core</artifactId>
                <version>${orika.core.version}</version>
            </dependency>

            <dependency>
                <groupId>net.coobird</groupId>
                <artifactId>thumbnailator</artifactId>
                <version>0.4.8</version>
            </dependency>

            <dependency>
                <groupId>com.lmax</groupId>
                <artifactId>disruptor</artifactId>
                <version>${disruptor.version}</version>
            </dependency>

            <dependency>
                <groupId>com.google.zxing</groupId>
                <artifactId>core</artifactId>
                <version>3.3.2</version>
            </dependency>

            <dependency>
                <groupId>org.bouncycastle</groupId>
                <artifactId>bcprov-jdk18on</artifactId>
                <version>1.80</version>
            </dependency>

            <!-- 数据持久相关 -->
            <dependency>
                <groupId>io.hypersistence</groupId>
                <artifactId>hypersistence-utils-hibernate-63</artifactId>
                <version>3.9.0</version>
            </dependency>

            <dependency>
                <groupId>io.github.openfeign.querydsl</groupId>
                <artifactId>querydsl-jpa</artifactId>
                <version>${querydsl.version}</version>
            </dependency>
            <dependency>
                <groupId>io.github.openfeign.querydsl</groupId>
                <artifactId>querydsl-apt</artifactId>
                <version>${querydsl.version}</version>
            </dependency>

            <!-- POI -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>5.4.1</version>
            </dependency>

            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-scratchpad</artifactId>
                <version>5.4.1</version>
            </dependency>

            <!-- Spring Boot -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${spring.boot.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-tomcat</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
                <version>${spring.boot.version}</version>
            </dependency>

            <!--ali-pay-->
            <dependency>
                <groupId>com.alipay.sdk</groupId>
                <artifactId>alipay-sdk-java</artifactId>
                <version>3.3.4.ALL</version>
            </dependency>

            <!-- casbin -->
            <dependency>
                <groupId>org.casbin</groupId>
                <artifactId>jcasbin</artifactId>
                <version>1.32.3</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.11.0</version>
                    <configuration>
                        <release>${java.version}</release>
                        <enablePreview>false</enablePreview>
                        <parameters>true</parameters>
                        <annotationProcessors>
                            <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                            <processor>lombok.launch.AnnotationProcessorHider$AnnotationProcessor</processor>
                            <processor>com.sankcrm.erp.apt.service.AutoServiceProcessor</processor>
                            <processor>com.sankcrm.erp.apt.modelfield.ModelFieldGenerateProcessor</processor>
                        </annotationProcessors>
                        <annotationProcessorPaths>
                            <annotationProcessorPath>
                                <groupId>io.github.openfeign.querydsl</groupId>
                                <artifactId>querydsl-apt</artifactId>
                                <version>${querydsl.version}</version>
                            </annotationProcessorPath>
                            <annotationProcessorPath>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                                <version>${lombok.version}</version>
                            </annotationProcessorPath>
                            <annotationProcessorPath>
                                <groupId>com.sankcrm.erp</groupId>
                                <artifactId>erp-apt</artifactId>
                                <version>${apt.version}</version>
                            </annotationProcessorPath>
                        </annotationProcessorPaths>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.3.0</version>
                    <configuration>
                        <archive>
                            <manifest>
                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>3.3.0</version>
                    <configuration>
                        <attach>true</attach>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>${spring.boot.version}</version>
                    <configuration>
                        <finalName>${project.artifactId}-run</finalName>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.4.0</version>
                    <configuration>
                        <includeEmptyDirectories>true</includeEmptyDirectories>
                        <!--                        <warName>${project.artifactId}</warName>-->
                        <archive>
                            <manifest>
                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.3.1</version>
                </plugin>

                <!-- java doc -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>3.5.0</version>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <charset>UTF-8</charset>
                        <encoding>UTF-8</encoding>
                        <docencoding>UTF-8</docencoding>
                        <tags>
                            <tag>
                                <name>date</name>
                                <placement>a</placement>
                                <head>create time:</head>
                            </tag>
                            <tag>
                                <name>ignore</name>
                                <placement>X</placement>
                                <head>ignore</head>
                            </tag>
                        </tags>
                    </configuration>
                </plugin>

                <!--TODO 文档配置-->
                <plugin>
                    <groupId>com.github.shalousun</groupId>
                    <artifactId>smart-doc-maven-plugin</artifactId>
                    <version>2.3.9.1</version>
                    <configuration>
                        <!-- 默认配置文件 -->
                        <configFile>/opt/deploy/maven/smart-doc/${project.artifactId}.json</configFile>
                        <projectName>${project.artifactId}</projectName>
                        <includes>
                            <include>${project.groupId}:${project.artifactId}</include>
                        </includes>
                    </configuration>
                    <executions>
                        <execution>
                            <!--如果不需要在执行编译时启动smart-doc，则将phase注释掉-->
                            <phase>compile</phase>
                            <goals>
                                <!--smart-doc提供了html、openapi、markdown等goal，可按需配置-->
                                <goal>torna-rest</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>

        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.8.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>sources</goal>
                        </goals>
                        <configuration>
                            <classifier>sources</classifier>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>sankcrmJava</id>
            <name>SankCRM Java Package Registry</name>
            <url>https://gitea.sankcrm.cn/api/packages/java/maven</url>
        </repository>
        <repository>
            <id>jkpPublic</id>
            <name>Jikapay Maven Repository</name>
            <url>http://maven.sankcrm.cn/repository/maven-public</url>
        </repository>
<repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>http://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>sankcrmJava</id>
            <name>SankCRM Java Package Registry</name>
            <url>https://gitea.sankcrm.cn/api/packages/java/maven</url>
        </pluginRepository>
        <pluginRepository>
            <id>jkpPublic</id>
            <name>Jikapay Maven Repository</name>
            <url>http://maven.sankcrm.cn/repository/maven-public</url>
        </pluginRepository>
    </pluginRepositories>
    <distributionManagement>
        <repository>
            <id>jkpReleases</id>
            <name>Jikapay Releases</name>
            <url>http://maven.sankcrm.cn/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>jkpSnapshot</id>
            <name>Jikapay Snapshot</name>
            <url>http://maven.sankcrm.cn/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
</project>
