<?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.tencent.supersonic</groupId>

    <artifactId>supersonic</artifactId>
    <packaging>pom</packaging>
    <version>${revision}</version>
    <modules>
        <module>auth</module>
        <module>chat</module>
        <module>common</module>
        <module>launchers</module>
        <module>semantic</module>
    </modules>

    <name>supersonic</name>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.1</version>
    </parent>

    <properties>
        <java.source.version>1.8</java.source.version>
        <java.target.version>1.8</java.target.version>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <file.encoding>UTF-8</file.encoding>
        <apache.log4j.version>2.17.1</apache.log4j.version>
        <pagehelper.version>5.3.3</pagehelper.version>
        <pagehelper.spring.version>1.2.10</pagehelper.spring.version>
        <mybatis.version>3.5.3</mybatis.version>
        <lombok.version>1.18.20</lombok.version>
        <guava.version>20.0</guava.version>
        <hanlp.version>portable-1.8.3</hanlp.version>
        <hadoop.version>2.7.2</hadoop.version>
        <jackson.version>2.11.2</jackson.version>
        <commons.lang.version>2.6</commons.lang.version>
        <commons.lang3.version>3.7</commons.lang3.version>
        <org.testng.version>6.13.1</org.testng.version>
        <yaml.utils.version>2.14.1</yaml.utils.version>
        <transmittable.thread.local.version>2.12.1</transmittable.thread.local.version>
        <jjwt.version>0.9.1</jjwt.version>
        <alibaba.druid.version>1.2.3</alibaba.druid.version>
        <mysql.connector.java.version>5.1.46</mysql.connector.java.version>
        <mybatis.plus.version>3.1.2</mybatis.plus.version>
        <clickhouse.jdbc.version>0.4.6</clickhouse.jdbc.version>
        <h2.version>1.4.200</h2.version>
        <fastjson.version>2.0.24</fastjson.version>
        <dozer.verson>6.5.0</dozer.verson>
        <httpmime.version>4.5.6</httpmime.version>
        <transmittable.version>2.12.1</transmittable.version>
        <commons.compress.version>1.21</commons.compress.version>
        <jetty.util.version>6.1.26</jetty.util.version>
        <spring.version>2.5.1</spring.version>
        <calcite.version>1.34.0</calcite.version>
        <calcite.avatica.version>1.23.0</calcite.avatica.version>
        <xk.time.version>3.2.4</xk.time.version>
        <mockito-inline.version>4.5.1</mockito-inline.version>
        <jsqlparser.version>4.5</jsqlparser.version>
        <revision>0.8.0-SNAPSHOT</revision>
        <!-- Do not bump spotless plugin version since 2.30.0 is the latest version supports Java 8-->
        <maven.plugin.spotless.version>2.30.0</maven.plugin.spotless.version>
        <spotless.python.includes></spotless.python.includes>
        <!-- Do not bump black version as decided by spotless maven plugin-->
        <spotless.python.black.version>22.3.0</spotless.python.black.version>
        <easyexcel.version>2.2.6</easyexcel.version>
        <poi.version>3.17</poi.version>
        <langchain4j.version>0.24.0</langchain4j.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!--pagehelper-->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>${pagehelper.version}</version>
            </dependency>

            <!--lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>
            <!--guava-->
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${guava.version}</version>
            </dependency>
            <!--langchain4j-->
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j-parent</artifactId>
                <version>${langchain4j.version}</version>
            </dependency>
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j</artifactId>
                <version>${langchain4j.version}</version>
            </dependency>
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j-core</artifactId>
                <version>${langchain4j.version}</version>
            </dependency>
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j-spring-boot-starter</artifactId>
                <version>${langchain4j.version}</version>
            </dependency>
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j-open-ai</artifactId>
                <version>${langchain4j.version}</version>
            </dependency>
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j-hugging-face</artifactId>
                <version>${langchain4j.version}</version>
            </dependency>
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j-chroma</artifactId>
                <version>${langchain4j.version}</version>
            </dependency>
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j-embeddings</artifactId>
                <version>${langchain4j.version}</version>
            </dependency>
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j-hugging-face</artifactId>
                <version>${langchain4j.version}</version>
            </dependency>
            <dependency>
                <groupId>dev.langchain4j</groupId>
                <artifactId>langchain4j-embeddings-all-minilm-l6-v2</artifactId>
                <version>${langchain4j.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <profiles>
        <profile>
            <id>spotless-python</id>
            <properties>
                <spotless.python.includes>src/**/*.py</spotless.python.includes>
            </properties>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>flatten-maven-plugin</artifactId>
                <version>1.1.0</version>
                <configuration>
                    <updatePomFile>true</updatePomFile>
                    <flattenMode>resolveCiFriendliesOnly</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>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>${java.source.version}</source>
                    <target>${java.target.version}</target>
                    <encoding>${file.encoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>com.diffplug.spotless</groupId>
                <artifactId>spotless-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.sonarsource.scanner.maven</groupId>
                    <artifactId>sonar-maven-plugin</artifactId>
                    <version>3.6.0.1398</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>3.1.2</version>
                    <dependencies>
                        <dependency>
                            <groupId>com.puppycrawl.tools</groupId>
                            <artifactId>checkstyle</artifactId>
                            <version>9.3</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <configLocation>checkstyle/checkstyle.xml</configLocation>
                        <encoding>UTF-8</encoding>
                        <consoleOutput>true</consoleOutput>
                        <failsOnError>true</failsOnError>
                        <linkXRef>false</linkXRef>
                        <includeTestSourceDirectory>true</includeTestSourceDirectory>
                    </configuration>
                    <executions>
                        <execution>
                            <id>checkstyle-validation</id>
                            <phase>validate</phase>
                            <inherited>true</inherited>
                            <goals>
                                <goal>check</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>com.diffplug.spotless</groupId>
                    <artifactId>spotless-maven-plugin</artifactId>
                    <version>${maven.plugin.spotless.version}</version>
                    <configuration>
                        <upToDateChecking>
                            <enabled>true</enabled>
                        </upToDateChecking>
                        <python>
                            <includes>
                                <include>${spotless.python.includes}</include>
                            </includes>
                            <black>
                                <version>${spotless.python.black.version}</version>
                            </black>
                        </python>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>check</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
