<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>tech.easyflow</groupId>
    <artifactId>easyflow</artifactId>
    <version>${revision}</version>
    <packaging>pom</packaging>

    <modules>
        <module>easyflow-api</module>
        <module>easyflow-commons</module>
        <module>easyflow-modules</module>
        <module>easyflow-starter</module>
    </modules>

    <properties>
        <revision>1.1.0</revision>
        <easy-agents.version>1.1.0</easy-agents.version>
        <java.versionm>17</java.versionm>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven-flatten.version>1.3.0</maven-flatten.version>
        <mybatis-flex.version>1.11.6</mybatis-flex.version>
        <okhttp.version>4.9.3</okhttp.version>
        <kotlin.version>1.8.22</kotlin.version>
        <spring-boot.version>3.5.9</spring-boot.version>
        <flyway.version>10.20.1</flyway.version>
        <flyway.clickhouse.version>10.20.0</flyway.clickhouse.version>
        <clickhouse.version>0.7.1</clickhouse.version>
        <slf4j.version>2.0.17</slf4j.version>
        <HikariCP.version>4.0.3</HikariCP.version>
        <fastjson.version>2.0.57</fastjson.version>
        <junit.version>4.13.2</junit.version>
        <sa-token.version>1.40.0</sa-token.version>
        <commonmark.version>0.18.0</commonmark.version>
        <jsoup.version>1.16.1</jsoup.version>
        <openhtmltopdf.version>1.0.10</openhtmltopdf.version>
        <commons-io.version>2.18.0</commons-io.version>
        <commons-csv.version>1.14.1</commons-csv.version>
        <commons-compress.version>1.28.0</commons-compress.version>
        <fastexcel.version>1.2.0</fastexcel.version>
        <hutool.version>5.8.36</hutool.version>
        <websocket.version>1.5.3</websocket.version>
        <snakeyaml.version>2.4</snakeyaml.version>
        <x-file-storage.version>2.2.1</x-file-storage.version>
        <aliyun-oss.version>3.16.1</aliyun-oss.version>
        <minio.version>8.5.12</minio.version>
        <jackson.version>2.19.4</jackson.version>
        <netty.version>4.1.130.Final</netty.version>
        <proguard.version>7.9.1</proguard.version>
        <proguard.maven.plugin.version>2.7.0</proguard.maven.plugin.version>
        <re2j.version>1.8</re2j.version>
    </properties>
    <dependencyManagement>
        <dependencies>

            <dependency>
                <groupId>jakarta.validation</groupId>
                <artifactId>jakarta.validation-api</artifactId>
                <version>3.0.2</version>
                <scope>compile</scope>
            </dependency>

            <dependency>
                <groupId>com.google.re2j</groupId>
                <artifactId>re2j</artifactId>
                <version>${re2j.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.httpcomponents.client5</groupId>
                <artifactId>httpclient5</artifactId>
                <version>5.6</version>
            </dependency>
            <dependency>
                <groupId>cloud.tianai.captcha</groupId>
                <artifactId>tianai-captcha-springboot-starter</artifactId>
                <version>1.5.3</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba.nls</groupId>
                <artifactId>nls-sdk-tts</artifactId>
                <version>2.2.14</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba.nls</groupId>
                <artifactId>nls-sdk-common</artifactId>
                <version>2.2.14</version>
            </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-quartz</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-websocket</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>

            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-core</artifactId>
                <version>${hutool.version}</version>
            </dependency>
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-crypto</artifactId>
                <version>${hutool.version}</version>
            </dependency>
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-extra</artifactId>
                <version>${hutool.version}</version>
            </dependency>
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-http</artifactId>
                <version>${hutool.version}</version>
            </dependency>
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-json</artifactId>
                <version>${hutool.version}</version>
            </dependency>

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

            <dependency>
                <groupId>cn.dev33</groupId>
                <artifactId>sa-token-spring-boot3-starter</artifactId>
                <version>${sa-token.version}</version>
            </dependency>

            <dependency>
                <groupId>org.java-websocket</groupId>
                <artifactId>Java-WebSocket</artifactId>
                <version>${websocket.version}</version>
            </dependency>

            <dependency>
                <groupId>com.mysql</groupId>
                <artifactId>mysql-connector-j</artifactId>
                <version>8.3.0</version>
            </dependency>

            <dependency>
                <groupId>com.clickhouse</groupId>
                <artifactId>clickhouse-jdbc</artifactId>
                <version>${clickhouse.version}</version>
                <classifier>all</classifier>
            </dependency>

            <dependency>
                <groupId>com.mybatis-flex</groupId>
                <artifactId>mybatis-flex-codegen</artifactId>
                <version>${mybatis-flex.version}</version>
            </dependency>
            <dependency>
                <groupId>com.mybatis-flex</groupId>
                <artifactId>mybatis-flex-spring-boot3-starter</artifactId>
                <version>${mybatis-flex.version}</version>
            </dependency>
            <dependency>
                <groupId>com.mybatis-flex</groupId>
                <artifactId>mybatis-flex-core</artifactId>
                <version>${mybatis-flex.version}</version>
            </dependency>

            <dependency>
                <groupId>com.easyagents</groupId>
                <artifactId>easy-agents-bom</artifactId>
                <version>${easy-agents.version}</version>
            </dependency>
            <dependency>
                <groupId>com.easyagents</groupId>
                <artifactId>easy-agents-flow</artifactId>
                <version>${easy-agents.version}</version>
            </dependency>
            <dependency>
                <groupId>com.easyagents</groupId>
                <artifactId>easy-agents-support</artifactId>
                <version>${easy-agents.version}</version>
            </dependency>
            <dependency>
                <groupId>com.easyagents</groupId>
                <artifactId>easy-agents-document-core</artifactId>
                <version>${easy-agents.version}</version>
            </dependency>
            <dependency>
                <groupId>com.easyagents</groupId>
                <artifactId>easy-agents-rag-retrieval</artifactId>
                <version>${easy-agents.version}</version>
            </dependency>
            <dependency>
                <groupId>com.easyagents</groupId>
                <artifactId>easy-agents-spring-boot-starter</artifactId>
                <version>${easy-agents.version}</version>
            </dependency>
            <dependency>
                <groupId>com.easyagents</groupId>
                <artifactId>easy-agents-agent-runtime</artifactId>
                <version>${easy-agents.version}</version>
            </dependency>
            <dependency>
                <groupId>com.easyagents</groupId>
                <artifactId>easy-agents-agui</artifactId>
                <version>${easy-agents.version}</version>
            </dependency>
            <dependency>
                <groupId>com.easyagents</groupId>
                <artifactId>easy-agents-skill</artifactId>
                <version>${easy-agents.version}</version>
            </dependency>

            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
                <version>${okhttp.version}</version>
            </dependency>
            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp-sse</artifactId>
                <version>${okhttp.version}</version>
            </dependency>
            <dependency>
                <groupId>com.zaxxer</groupId>
                <artifactId>HikariCP</artifactId>
                <version>${HikariCP.version}</version>
            </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-autoconfigure</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-validation</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.module</groupId>
                <artifactId>jackson-module-kotlin</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-stdlib</artifactId>
                <version>${kotlin.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-stdlib-jdk7</artifactId>
                <version>${kotlin.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-stdlib-jdk8</artifactId>
                <version>${kotlin.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-stdlib-common</artifactId>
                <version>${kotlin.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-reflect</artifactId>
                <version>${kotlin.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.flywaydb</groupId>
                <artifactId>flyway-core</artifactId>
                <version>${flyway.version}</version>
            </dependency>
            <dependency>
                <groupId>org.flywaydb</groupId>
                <artifactId>flyway-mysql</artifactId>
                <version>${flyway.version}</version>
            </dependency>
            <dependency>
                <groupId>org.flywaydb</groupId>
                <artifactId>flyway-database-clickhouse</artifactId>
                <version>${flyway.clickhouse.version}</version>
            </dependency>

            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>${fastjson.version}</version>
            </dependency>

            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>

            <dependency>
                <groupId>org.commonmark</groupId>
                <artifactId>commonmark</artifactId>
                <version>${commonmark.version}</version>
            </dependency>

            <dependency>
                <groupId>org.commonmark</groupId>
                <artifactId>commonmark-ext-gfm-tables</artifactId>
                <version>${commonmark.version}</version>
            </dependency>

            <dependency>
                <groupId>org.jsoup</groupId>
                <artifactId>jsoup</artifactId>
                <version>${jsoup.version}</version>
            </dependency>

            <dependency>
                <groupId>com.openhtmltopdf</groupId>
                <artifactId>openhtmltopdf-pdfbox</artifactId>
                <version>${openhtmltopdf.version}</version>
            </dependency>

            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>${commons-io.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-csv</artifactId>
                <version>${commons-csv.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-compress</artifactId>
                <version>${commons-compress.version}</version>
            </dependency>

            <dependency>
                <groupId>cn.idev.excel</groupId>
                <artifactId>fastexcel</artifactId>
                <version>${fastexcel.version}</version>
            </dependency>

            <!-- common -->
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-common-ai</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-common-analytical-db</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-common-all</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-common-base</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-common-cache</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-common-file-storage</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-common-options</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-common-satoken</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-common-captcha</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-common-web</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-common-audio</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-common-chat-protocol</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-common-mq</artifactId>
                <version>${revision}</version>
            </dependency>

            <!-- modules -->
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-module-ai</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-module-agent</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-module-skill</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-module-auth</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-module-autoconfig</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-module-log</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-module-chatlog</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-module-system</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-module-approval</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-module-job</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-module-datacenter</artifactId>
                <version>${revision}</version>
            </dependency>

            <!-- starter -->
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-starter</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-starter-admin</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-starter-all</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-starter-public</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-starter-usercenter</artifactId>
                <version>${revision}</version>
            </dependency>

            <!-- apis -->
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-api</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-api-admin</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-api-public</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-api-mcp</artifactId>
                <version>${revision}</version>
            </dependency>
            <dependency>
                <groupId>tech.easyflow</groupId>
                <artifactId>easyflow-api-usercenter</artifactId>
                <version>${revision}</version>
            </dependency>


            <!--间接依赖-->
            <dependency>
                <groupId>org.yaml</groupId>
                <artifactId>snakeyaml</artifactId>
                <version>${snakeyaml.version}</version>
            </dependency>

            <dependency>
                <groupId>org.dromara.x-file-storage</groupId>
                <artifactId>x-file-storage-spring</artifactId>
                <version>${x-file-storage.version}</version>
            </dependency>

            <dependency>
                <groupId>com.aliyun.oss</groupId>
                <artifactId>aliyun-sdk-oss</artifactId>
                <version>${aliyun-oss.version}</version>
            </dependency>
            <dependency>
                <groupId>io.minio</groupId>
                <artifactId>minio</artifactId>
                <version>${minio.version}</version>
            </dependency>

            <dependency>
                <groupId>com.easyagents</groupId>
                <artifactId>easy-agents-mcp</artifactId>
                <version>${easy-agents.version}</version>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.11.0</version>
                <configuration>
                    <source>17</source>
                    <target>17</target>
                    <encoding>UTF-8</encoding>
                    <compilerArgs>
                        <arg>-parameters</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>flatten-maven-plugin</artifactId>
                <version>${maven-flatten.version}</version>
                <configuration>
                    <updatePomFile>true</updatePomFile>
                    <flattenMode>oss</flattenMode>
                </configuration>
                <executions>
                    <execution>
                        <id>flatten</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>flatten</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>flatten.clean</id>
                        <phase>clean</phase>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
