<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

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

    <packaging>pom</packaging>
    <groupId>io.metersphere</groupId>
    <artifactId>metersphere</artifactId>
    <version>${revision}</version>
    <name>metersphere</name>
    <description>MeterSphere</description>

    <properties>
        <revision>3.x</revision>
        <java.version>21</java.version>
        <platform-plugin-sdk.version>1.5.0</platform-plugin-sdk.version>
        <shiro.version>1.12.0</shiro.version>
        <java-websocket.version>1.5.4</java-websocket.version>
        <easyexcel.version>3.3.2</easyexcel.version>
        <dom4j.version>2.1.4</dom4j.version>
        <guava.version>32.0.1-jre</guava.version>
        <pagehelper.version>5.3.3</pagehelper.version>
        <metersphere-jmeter-functions.version>1.5</metersphere-jmeter-functions.version>
        <quartz-starter.version>1.0.7</quartz-starter.version>
        <redisson-starter.version>3.23.5</redisson-starter.version>
        <guice.version>5.1.0</guice.version>
        <mybatis-starter.version>3.0.2</mybatis-starter.version>
        <reflections.version>0.10.2</reflections.version>
        <bcprov-jdk15on.version>1.70</bcprov-jdk15on.version>
        <commons-io.version>2.13.0</commons-io.version>
        <commons-text.version>1.10.0</commons-text.version>
        <xstream.version>1.4.20</xstream.version>
        <xmlbeans.version>5.1.1</xmlbeans.version>
        <swagger-parser.version>2.1.16</swagger-parser.version>
        <swagger.version>2.2.8</swagger.version>
        <springdoc-openapi-ui.version>2.1.0</springdoc-openapi-ui.version>
        <commonmark.version>0.19.0</commonmark.version>
        <commons-compress.version>1.21</commons-compress.version>
        <htmlcleaner.version>2.26</htmlcleaner.version>
        <xmindjbehaveplugin.version>0.8</xmindjbehaveplugin.version>
        <metersphere-plugin-core.version>2.0</metersphere-plugin-core.version>
        <plexus.version>3.0.24</plexus.version>
        <common-random.version>1.0.14</common-random.version>
        <generex.version>1.0.2</generex.version>
        <json-schema-validator.version>2.2.14</json-schema-validator.version>
        <xz.version>1.9</xz.version>
        <flatten.version>1.2.7</flatten.version>
        <jmeter.version>5.6.2</jmeter.version>
        <codehaus-groovy.version>3.0.11</codehaus-groovy.version>
        <graalpy-scriptengine.version>1.0.0</graalpy-scriptengine.version>
        <docker-java.version>3.2.14</docker-java.version>
        <selenium.version>4.14.0</selenium.version>
        <jmeter-plugins-webdriver.version>4.14.0</jmeter-plugins-webdriver.version>
        <opentelemetry.version>1.28.0</opentelemetry.version>
        <commons-beanutils.version>1.9.4</commons-beanutils.version>
        <hessian-lite.version>3.2.13</hessian-lite.version>
        <avro.version>1.11.1</avro.version>
        <dec.version>0.1.2</dec.version>
        <dingtalk-sdk.version>2.0.0</dingtalk-sdk.version>
        <dingtalk-client.version>2.0.29</dingtalk-client.version>
        <minio.version>8.5.2</minio.version>
        <hikaricp.version>5.0.1</hikaricp.version>
        <xmlgraphics-commons.version>2.7</xmlgraphics-commons.version>
        <commons-fileupload.version>1.5</commons-fileupload.version>
        <commons-collections4.version>4.4</commons-collections4.version>
        <kubernetes-client.version>6.8.0</kubernetes-client.version>
        <jgit.version>6.6.0.202305301015-r</jgit.version>
        <curator.version>5.4.0</curator.version>
        <graalvmjs.version>22.3.1</graalvmjs.version>
        <embedded.version>3.0.1</embedded.version>
        <otp-java.version>2.0.1</otp-java.version>
        <mockserver-client-java.version>5.15.0</mockserver-client-java.version>
        <httpclient.version>4.5.14</httpclient.version>
        <!-- frontend -->
        <frontend-maven-plugin.version>1.12.1</frontend-maven-plugin.version>
        <node.version>v20.8.1</node.version>
        <npm.version>10.1.0</npm.version>
        <pnpm.version>8.9.2</pnpm.version>
        <!--        -->
        <skipAntRunForJenkins>false</skipAntRunForJenkins>
        <commons-dbcp2-version>2.9.0</commons-dbcp2-version>
        <jacoco.version>0.8.10</jacoco.version>
        <pf4j.version>3.10.0</pf4j.version>
        <!--   sonar     -->
        <sonar.organization>metersphere</sonar.organization>
        <sonar.host.url>https://sonarcloud.io</sonar.host.url>
    </properties>

    <modules>
        <module>frontend</module>
        <module>backend</module>
    </modules>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <artifactId>android-json</artifactId>
                    <groupId>com.vaadin.external.google</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.mock-server</groupId>
            <artifactId>mockserver-netty</artifactId>
            <scope>test</scope>
            <version>${mockserver-client-java.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mock-server</groupId>
            <artifactId>mockserver-client-java</artifactId>
            <version>${mockserver-client-java.version}</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <artifactId>commons-logging</artifactId>
                    <groupId>commons-logging</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--   embedded 配置      -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>4.0.4</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.playtika.testcontainers</groupId>
            <artifactId>embedded-mysql</artifactId>
            <version>${embedded.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.playtika.testcontainers</groupId>
            <artifactId>embedded-redis</artifactId>
            <version>${embedded.version}</version>
            <scope>test</scope>
        </dependency>
        <!--    内置 minio 和 kafka    -->
        <dependency>
            <groupId>com.playtika.testcontainers</groupId>
            <artifactId>embedded-minio</artifactId>
            <version>${embedded.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.playtika.testcontainers</groupId>
            <artifactId>embedded-kafka</artifactId>
            <version>${embedded.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.playtika.testcontainers</groupId>
            <artifactId>embedded-mockserver</artifactId>
            <version>${embedded.version}</version>
            <scope>test</scope>
        </dependency>
        <!-- end  embedded 配置     -->
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.json</include>
                    <include>**/*.tpl</include>
                    <include>**/*.js</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <release>${java.version}</release>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>flatten-maven-plugin</artifactId>
                <version>${flatten.version}</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.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>${jacoco.version}</version>
                <configuration>
                    <excludes>
                        <exclude>io/metersphere/*/mapper/**</exclude>
                        <exclude>io/metersphere/*/domain/**</exclude>
                        <exclude>io/metersphere/**/dto/**</exclude>
                        <exclude>io/metersphere/**/config/**</exclude>
                        <exclude>io/metersphere/**/constants/**</exclude>
                        <exclude>io/metersphere/sdk/**</exclude>
                        <exclude>io/metersphere/plugin/**</exclude>
                    </excludes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>report</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <distributionManagement>
        <repository>
            <id>fit2cloud-public</id>
            <url>https://repository.fit2cloud.com/content/repositories/fit2cloud-public</url>
        </repository>
    </distributionManagement>
    <repositories>
        <repository>
            <id>central</id>
            <url>https://repo.maven.apache.org/maven2</url>
        </repository>
        <repository>
            <id>fit2cloud-public</id>
            <url>https://repository.fit2cloud.com/repository/public/</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>central</id>
            <url>https://repo.maven.apache.org/maven2</url>
        </pluginRepository>
        <pluginRepository>
            <id>fit2cloud-public</id>
            <url>https://repository.fit2cloud.com/repository/public/</url>
        </pluginRepository>
    </pluginRepositories>
</project>