<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you 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>org.apache</groupId>
        <artifactId>apache</artifactId>
        <version>23</version>
    </parent>
    <groupId>org.apache.iotdb</groupId>
    <artifactId>iotdb-parent</artifactId>
    <version>0.14.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Apache IoTDB Project Parent POM</name>
    <description>This is the top level project that builds, packages the tsfile, iotdb engine, jdbc, and integration libs.</description>
    <licenses>
        <license>
            <name>The Apache License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
        </license>
    </licenses>
    <scm>
        <connection>scm:git:ssh://git@github.com/apache/iotdb.git</connection>
        <developerConnection>scm:git:ssh://git@github.com/apache/iotdb.git</developerConnection>
        <url>ssh://git@github.com:apache/iotdb.git</url>
        <tag>rel/0.10</tag>
    </scm>
    <!-- Only configure the site distribution as the rest is handled by the apache parent -->
    <distributionManagement>
        <site>
            <id>apache.website</id>
            <url>scm:git:https://gitbox.apache.org/repos/asf/iotdb-website.git</url>
        </site>
    </distributionManagement>
    <issueManagement>
        <system>Jira</system>
        <url>https://issues.apache.org/jira/browse/iotdb</url>
    </issueManagement>
    <mailingLists>
        <mailingList>
            <name>Apache IoTDB Developer List</name>
            <subscribe>mailto:dev-subscribe@iotdb.apache.org</subscribe>
            <unsubscribe>mailto:dev-unsubscribe@iotdb.apache.org</unsubscribe>
            <post>mailto:dev@iotdb.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/iotdb-dev/</archive>
        </mailingList>
        <mailingList>
            <name>IoTDB Commits List</name>
            <subscribe>mailto:commit-subscribe@iotdb.apache.org</subscribe>
            <unsubscribe>mailto:commits-unsubscribe@iotdb.apache.org</unsubscribe>
            <post>mailto:commits@iotdb.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/iotdb-commits/</archive>
        </mailingList>
        <mailingList>
            <name>IoTDB Jira Notifications List</name>
            <subscribe>mailto:notifications-subscribe@iotdb.apache.org</subscribe>
            <unsubscribe>mailto:notifications-unsubscribe@iotdb.apache.org</unsubscribe>
            <post>mailto:notifications@iotdb.apache.org</post>
            <archive>http://mail-archives.apache.org/mod_mbox/iotdb-notifications/</archive>
        </mailingList>
    </mailingLists>
    <modules>
        <module>tsfile</module>
        <module>antlr</module>
        <module>thrift</module>
        <module>thrift-commons</module>
        <module>thrift-confignode</module>
        <module>thrift-multi-leader-consensus</module>
        <module>thrift-influxdb</module>
        <module>service-rpc</module>
        <module>jdbc</module>
        <module>influxdb-protocol</module>
        <module>session</module>
        <module>cli</module>
        <module>openapi</module>
        <module>server</module>
        <module>example</module>
        <module>grafana-plugin</module>
        <module>grafana-connector</module>
        <module>spark-tsfile</module>
        <module>hadoop</module>
        <module>spark-iotdb-connector</module>
        <module>flink-tsfile-connector</module>
        <module>flink-iotdb-connector</module>
        <module>distribution</module>
        <module>hive-connector</module>
        <module>node-commons</module>
        <module>confignode</module>
        <module>cross-tests</module>
        <module>zeppelin-interpreter</module>
        <module>client-py</module>
        <module>compile-tools</module>
        <module>client-cpp</module>
        <module>metrics</module>
        <module>integration</module>
        <module>integration-test</module>
        <module>consensus</module>
        <module>external-pipe-api</module>
        <module>library-udf</module>
        <module>schema-engine-rocksdb</module>
        <module>udf-api</module>
        <module>trigger-api</module>
        <module>rewrite-tsfile-tool</module>
        <module>external-api</module>
    </modules>
    <!-- Properties Management -->
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.assembly.version>3.1.0</maven.assembly.version>
        <scala.library.version>2.11</scala.library.version>
        <scala.version>2.11.12</scala.version>
        <hadoop2.version>2.10.1</hadoop2.version>
        <hive2.version>2.3.6</hive2.version>
        <junit.version>4.13.2</junit.version>
        <slf4j.version>1.7.12</slf4j.version>
        <logback.version>1.2.11</logback.version>
        <joda.version>2.9.9</joda.version>
        <spark.version>2.4.5</spark.version>
        <flink.version>1.14.5</flink.version>
        <common.io.version>2.11.0</common.io.version>
        <commons.collections4>4.4</commons.collections4>
        <!-- keep consistent with client-cpp/tools/thrift/pom.xml-->
        <thrift.version>0.14.1</thrift.version>
        <airline.version>0.8</airline.version>
        <jackson.version>2.10.5</jackson.version>
        <antlr4.version>4.8-1</antlr4.version>
        <common.cli.version>1.3.1</common.cli.version>
        <common.codec.version>1.13</common.codec.version>
        <common.collections.version>3.2.2</common.collections.version>
        <common.lang3.version>3.9</common.lang3.version>
        <common.logging.version>1.1.3</common.logging.version>
        <common.pool2.version>2.11.1</common.pool2.version>
        <org.slf4j.version>1.7.36</org.slf4j.version>
        <guava.version>24.1.1</guava.version>
        <jline.version>3.21.0</jline.version>
        <jetty.version>9.4.48.v20220622</jetty.version>
        <dropwizard.metrics.version>4.2.7</dropwizard.metrics.version>
        <micrometer.metrics.version>1.6.2</micrometer.metrics.version>
        <javax.xml.bind.version>2.4.0-b180830.0359</javax.xml.bind.version>
        <felix.version>5.1.7</felix.version>
        <snappy.version>1.1.8.4</snappy.version>
        <netty.version>4.1.53.Final</netty.version>
        <!-- URL of the ASF SonarQube server -->
        <sonar.host.url>https://sonarcloud.io</sonar.host.url>
        <sonar.organization>apache</sonar.organization>
        <!-- Exclude all generated code -->
        <sonar.exclusions>**/generated-sources</sonar.exclusions>
        <sonar.java.checkstyle.reportPaths>target/checkstyle-report.xml</sonar.java.checkstyle.reportPaths>
        <sonar.coverage.jacoco.xmlReportPaths>target/jacoco-merged-reports/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
        <sonar.junit.reportPaths>target/surefire-reports,target/failsafe-reports</sonar.junit.reportPaths>
        <!-- By default, the argLine is empty-->
        <gson.version>2.8.9</gson.version>
        <argLine/>
        <!-- whether enable compiling the cpp client-->
        <client-cpp>false</client-cpp>
        <!-- disable enforcer by default-->
        <enforcer.skip>true</enforcer.skip>
        <spotless.version>2.22.8</spotless.version>
        <httpclient.version>4.5.13</httpclient.version>
        <httpcore.version>4.4.15</httpcore.version>
        <!-- for REST service -->
        <swagger.core.version>1.5.18</swagger.core.version>
        <servlet.api.version>2.5</servlet.api.version>
        <openapi.generator.version>5.0.0</openapi.generator.version>
        <!-- cli -->
        <progressbar.version>0.9.3</progressbar.version>
        <!-- for java 11-->
        <javax.annotation-api.version>1.3.2</javax.annotation-api.version>
        <log4j.version>1.2.19</log4j.version>
        <lz4-java.version>1.8.0</lz4-java.version>
        <jackson-mapper-asl.version>1.9.13</jackson-mapper-asl.version>
        <jaxb-runtime.version>3.0.2</jaxb-runtime.version>
        <mockito-core.version>2.23.0</mockito-core.version>
        <objenesis.version>3.2</objenesis.version>
        <powermock-core.version>2.0.9</powermock-core.version>
        <scalatest_2.11.version>3.0.5</scalatest_2.11.version>
        <io.airlift.units.version>1.6</io.airlift.units.version>
        <io.airlift.slice.version>0.41</io.airlift.slice.version>
        <dep.airlift.version>200</dep.airlift.version>
        <!-- do not upgrade this package unless we have to...
        Some experiments(https://github.com/jixuan1989/DependencyTest/blob/main/src/main/java/timecho/exp/JolTimeCost.java):
        jol v0.2, scan tsfile package and calculate the classes size, time cost: 600ms
        jol v0.4: time cost is 980ms,
        jol v0.14, time cost is 1600ms
        -->
        <jol-core.version>0.2</jol-core.version>
        <jackson-core-asl.version>1.9.13</jackson-core-asl.version>
        <mqtt-client.version>1.12</mqtt-client.version>
        <google.code.findbugs.jsr305.version>3.0.2</google.code.findbugs.jsr305.version>
        <jna.version>5.8.0</jna.version>
        <zookeeper.version>3.4.14</zookeeper.version>
        <commons-beanutils.version>1.9.4</commons-beanutils.version>
        <commons-compress.version>1.21</commons-compress.version>
        <error_prone_annotations.version>2.7.1</error_prone_annotations.version>
        <testcontainers.version>1.15.3</testcontainers.version>
        <eclipse-collections.version>10.4.0</eclipse-collections.version>
        <awaitility.version>4.0.3</awaitility.version>
        <!-- JDK1.8 only support google java format 1.7-->
        <google.java.format.version>1.7</google.java.format.version>
        <!-- caffeine cache -->
        <caffeine>2.9.1</caffeine>
        <commons-csv.version>1.9.0</commons-csv.version>
        <commons-lang.version>2.6</commons-lang.version>
        <influxdb-java.version>2.21</influxdb-java.version>
        <JTransforms.version>3.1</JTransforms.version>
    </properties>
    <!--
        if we claim dependencies in dependencyManagement, then we do not claim
        their version in sub-project's pom, but we have to claim themselves again
        in sub-projects
    -->
    <dependencyManagement>
        <dependencies>
            <!--
                in the subprojects, you have to claim logback again, because maybe
                someone in your dependences uses log4j lib.
            -->
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>${logback.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-paranamer</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.module</groupId>
                <artifactId>jackson-module-scala_2.11</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>[${guava.version},)</version>
            </dependency>
            <dependency>
                <groupId>commons-cli</groupId>
                <artifactId>commons-cli</artifactId>
                <version>${common.cli.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>${common.codec.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
                <version>${common.collections.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>${common.io.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>${common.logging.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-all</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-buffer</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-common</artifactId>
                <version>${netty.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.annotation</groupId>
                <artifactId>javax.annotation-api</artifactId>
                <version>${javax.annotation-api.version}</version>
            </dependency>
            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>${javax.xml.bind.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jline</groupId>
                <artifactId>jline</artifactId>
                <version>${jline.version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.reload4j</groupId>
                <artifactId>reload4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.lz4</groupId>
                <artifactId>lz4-java</artifactId>
                <version>${lz4-java.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-server</artifactId>
                <version>${jetty.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-webapp</artifactId>
                <version>${jetty.version}</version>
            </dependency>
            <dependency>
                <groupId>me.tongfei</groupId>
                <artifactId>progressbar</artifactId>
                <version>${progressbar.version}</version>
                <exclusions>
                    <!-- This transitive dependency duplicates classes from jline:jline:jar:2.14.5:compile -->
                    <exclusion>
                        <groupId>org.fusesource.jansi</groupId>
                        <artifactId>jansi</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.antlr</groupId>
                <artifactId>antlr4-runtime</artifactId>
                <version>${antlr4.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-collections4</artifactId>
                <version>${commons.collections4}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${common.lang3.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-pool2</artifactId>
                <version>${common.pool2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-client</artifactId>
                <version>${hadoop2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hive</groupId>
                <artifactId>hive-serde</artifactId>
                <version>${hive2.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hive</groupId>
                <artifactId>hive-exec</artifactId>
                <version>${hive2.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.pentaho</groupId>
                        <artifactId>pentaho-aggdesigner-algorithm</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-core_2.11</artifactId>
                <version>${spark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-sql_2.11</artifactId>
                <version>${spark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-core-asl</artifactId>
                <version>${jackson-core-asl.version}</version>
            </dependency>
            <dependency>
                <groupId>org.codehaus.jackson</groupId>
                <artifactId>jackson-mapper-asl</artifactId>
                <version>${jackson-mapper-asl.version}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jaxb</groupId>
                <artifactId>jaxb-runtime</artifactId>
                <version>${jaxb-runtime.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>jakarta.activation</groupId>
                        <artifactId>jakarta.activation-api</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <!--            <dependency>
                <groupId>org.javassist</groupId>
                <artifactId>javassist</artifactId>
                <version>3.24.1-GA</version>
            </dependency>-->
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>${mockito-core.version}</version>
            </dependency>
            <!-- for generate a class instance. (where to use it ?)-->
            <!--            <dependency>-->
            <!--                <groupId>org.objenesis</groupId>-->
            <!--                <artifactId>objenesis</artifactId>-->
            <!--                <version>${objenesis.version}</version>-->
            <!--            </dependency>-->
            <dependency>
                <groupId>org.powermock</groupId>
                <artifactId>powermock-core</artifactId>
                <version>${powermock-core.version}</version>
            </dependency>
            <dependency>
                <groupId>org.powermock</groupId>
                <artifactId>powermock-api-mockito2</artifactId>
                <version>${powermock-core.version}</version>
            </dependency>
            <dependency>
                <groupId>org.powermock</groupId>
                <artifactId>powermock-module-junit4</artifactId>
                <version>${powermock-core.version}</version>
            </dependency>
            <dependency>
                <groupId>org.scala-lang</groupId>
                <artifactId>scala-library</artifactId>
                <version>${scala.version}</version>
            </dependency>
            <dependency>
                <groupId>org.scala-lang</groupId>
                <artifactId>scala-reflect</artifactId>
                <version>${scala.version}</version>
            </dependency>
            <dependency>
                <groupId>org.scalatest</groupId>
                <artifactId>scalatest_2.11</artifactId>
                <version>${scalatest_2.11.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${org.slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jul-to-slf4j</artifactId>
                <version>${org.slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${org.slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-reload4j</artifactId>
                <version>${org.slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.xerial.snappy</groupId>
                <artifactId>snappy-java</artifactId>
                <version>${snappy.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.thrift</groupId>
                <artifactId>libthrift</artifactId>
                <version>${thrift.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.httpcomponents</groupId>
                        <artifactId>httpclient</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.httpcomponents</groupId>
                        <artifactId>httpcore</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.tomcat.embed</groupId>
                        <artifactId>tomcat-embed-core</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>units</artifactId>
                <version>${io.airlift.units.version}</version>
            </dependency>
            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>airline</artifactId>
                <version>${airline.version}</version>
            </dependency>
            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>slice</artifactId>
                <version>${io.airlift.slice.version}</version>
            </dependency>
            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>stats</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>
            <dependency>
                <groupId>io.airlift</groupId>
                <artifactId>concurrent</artifactId>
                <version>${dep.airlift.version}</version>
            </dependency>
            <dependency>
                <groupId>org.openjdk.jol</groupId>
                <artifactId>jol-core</artifactId>
                <version>${jol-core.version}</version>
            </dependency>
            <dependency>
                <groupId>org.fusesource.mqtt-client</groupId>
                <artifactId>mqtt-client</artifactId>
                <version>${mqtt-client.version}</version>
            </dependency>
            <!-- many dependencies (hadoop, spark, hive, flink) use findbugs but with different version...-->
            <dependency>
                <groupId>com.google.code.findbugs</groupId>
                <artifactId>jsr305</artifactId>
                <!-- spark uses the lastest version than hive, flink and hadoop-->
                <version>${google.code.findbugs.jsr305.version}</version>
            </dependency>
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>${gson.version}</version>
            </dependency>
            <!-- for cli and test container -->
            <dependency>
                <groupId>net.java.dev.jna</groupId>
                <artifactId>jna</artifactId>
                <version>${jna.version}</version>
            </dependency>
            <!-- for hadoop connector -->
            <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>${zookeeper.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-beanutils</groupId>
                <artifactId>commons-beanutils</artifactId>
                <version>${commons-beanutils.version}</version>
            </dependency>
            <!-- for test-container and hadoop conflict-->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-compress</artifactId>
                <version>${commons-compress.version}</version>
            </dependency>
            <!-- for spark-iotdb-connector and hadoop connector conflict -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>${httpclient.version}</version>
            </dependency>
            <!-- for spark-iotdb conflict -->
            <dependency>
                <groupId>com.google.errorprone</groupId>
                <artifactId>error_prone_annotations</artifactId>
                <version>${error_prone_annotations.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore</artifactId>
                <version>${httpcore.version}</version>
            </dependency>
            <!-- for hive connector-->
            <dependency>
                <groupId>com.github.ben-manes.caffeine</groupId>
                <artifactId>caffeine</artifactId>
                <version>${caffeine}</version>
            </dependency>
            <dependency>
                <groupId>org.awaitility</groupId>
                <artifactId>awaitility</artifactId>
                <version>${awaitility.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-csv</artifactId>
                <version>${commons-csv.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-lang</groupId>
                <artifactId>commons-lang</artifactId>
                <version>${commons-lang.version}</version>
            </dependency>
            <dependency>
                <groupId>org.influxdb</groupId>
                <artifactId>influxdb-java</artifactId>
                <version>${influxdb-java.version}</version>
            </dependency>
            <dependency>
                <groupId>com.github.wendykierp</groupId>
                <artifactId>JTransforms</artifactId>
                <version>${JTransforms.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.testcontainers</groupId>
            <artifactId>testcontainers</artifactId>
            <version>${testcontainers.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-jexl3</artifactId>
            <version>3.2.1</version>
        </dependency>
    </dependencies>
    <build>
        <pluginManagement>
            <plugins>
                <!-- using `mvn -N versions:update-child-modules` can update the version
                of child modules to what their parent claims -->
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>versions-maven-plugin</artifactId>
                    <version>2.3</version>
                    <configuration>
                        <generateBackupPoms>false</generateBackupPoms>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <configuration>
                        <excludePackageNames>*thrift*</excludePackageNames>
                        <!--
                          This will suppress the generation of a hidden timestamp at the top of each generated html page
                          and hopefully let the site generation nod to too big updates every time.
                        -->
                        <notimestamp>true</notimestamp>
                        <!--Don't fail the build, just because there were issues in the JavaDoc generation.-->
                        <failOnError>false</failOnError>
                    </configuration>
                </plugin>
                <!--
                  We need to increase the memory available to tests as we were
                  getting out-of-memory errors when building on windows machines.
                -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <argLine>${argLine} -Xmx1024m</argLine>
                    </configuration>
                </plugin>
                <!--
                    Plugin for doing the code analysis.
                -->
                <plugin>
                    <groupId>org.sonarsource.scanner.maven</groupId>
                    <artifactId>sonar-maven-plugin</artifactId>
                    <version>3.6.1.1688</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.rat</groupId>
                    <artifactId>apache-rat-plugin</artifactId>
                    <configuration>
                        <consoleOutput>true</consoleOutput>
                        <excludes>
                            <!-- Git related files -->
                            <exclude>**/.git/**</exclude>
                            <exclude>**/.mvn/**</exclude>
                            <exclude>**/.gitignore</exclude>
                            <exclude>**/.gitmodules</exclude>
                            <exclude>**/.git-blame-ignore-revs</exclude>
                            <!-- Maven related files -->
                            <exclude>**/target/**</exclude>
                            <!-- Eclipse related files -->
                            <exclude>**/.project</exclude>
                            <exclude>**/.settings/**</exclude>
                            <exclude>**/.classpath</exclude>
                            <!-- IntelliJ related files -->
                            <exclude>**/.idea/**</exclude>
                            <exclude>**/*.iml</exclude>
                            <!-- Runtime log -->
                            <exclude>**/*.log</exclude>
                            <!-- Exclude CVS files -->
                            <exclude>**/*.cvs</exclude>
                            <!-- licenses -->
                            <exclude>licenses/*</exclude>
                            <!-- only for Travis CI with WinOS-->
                            <exclude>hadoopbin</exclude>
                            <exclude>windowssystem32</exclude>
                            <!-- generated by Github -->
                            <exclude>**/.github/**</exclude>
                            <!-- figures -->
                            <exclude>**/.eps</exclude>
                            <exclude>**/.png</exclude>
                            <exclude>**/.jpg</exclude>
                            <exclude>**/.jpeg</exclude>
                            <!--Generated by Apache Release -->
                            <exclude>local-snapshots-dir/**</exclude>
                            <!-- JSON can't contain comments and therefore no Apache header -->
                            <exclude>*.json</exclude>
                            <!-- visualization plans -->
                            <exclude>**/*.plan</exclude>
                            <exclude>**/NOTICE-binary</exclude>
                            <exclude>**/LICENSE-binary</exclude>
                            <!-- json does not support comments-->
                            <exclude>**/*.json</exclude>
                            <!-- the zeppelin export file format-->
                            <exclude>**/*.zpln</exclude>
                            <!-- exclude go.mod and go.sum in iotdb-client-go submodule-->
                            <exclude>**/go.mod</exclude>
                            <exclude>**/go.sum</exclude>
                            <!-- python -->
                            <exclude>.pytest_cache/**</exclude>
                            <exclude>venv/**</exclude>
                            <exclude>apache_iotdb.egg-info/**</exclude>
                            <exclude>**/iotdb/thrift/__init__.py</exclude>
                            <exclude>**/iotdb/thrift/rpc/__init__.py</exclude>
                            <exclude>**/iotdb/thrift/common/__init__.py</exclude>
                            <!-- Java SPI uses files in resources/META-INF/services-->
                            <exclude>**/resources/META-INF/services/**</exclude>
                            <!-- grafana plugin -->
                            <exclude>**/yarn.lock</exclude>
                            <!-- site-->
                            <exclude>**/redirects</exclude>
                        </excludes>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>com.diffplug.spotless</groupId>
                    <artifactId>spotless-maven-plugin</artifactId>
                    <version>${spotless.version}</version>
                    <configuration>
                        <java>
                            <googleJavaFormat>
                                <version>${google.java.format.version}</version>
                                <style>GOOGLE</style>
                            </googleJavaFormat>
                            <importOrder>
                                <order>org.apache.iotdb,,javax,java,\#</order>
                            </importOrder>
                            <removeUnusedImports/>
                        </java>
                        <lineEndings>UNIX</lineEndings>
                    </configuration>
                    <executions>
                        <execution>
                            <id>spotless-check</id>
                            <phase>validate</phase>
                            <goals>
                                <goal>check</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.eluder.coveralls</groupId>
                <artifactId>coveralls-maven-plugin</artifactId>
                <version>4.3.0</version>
                <configuration>
                    <jacocoReports>
                        <jacocoReport>code-coverage/target/jacoco-merged-reports/jacoco.xml</jacocoReport>
                    </jacocoReports>
                    <sourceEncoding>UTF-8</sourceEncoding>
                    <sourceDirectories>
                        <!-- put all source folders not in src/main/java here-->
                        <sourceDirectory>antlr/target/generated-sources/antlr4</sourceDirectory>
                        <sourceDirectory>thrift/target/generated-sources/thrift</sourceDirectory>
                        <sourceDirectory>thrift-commons/target/generated-sources/thrift</sourceDirectory>
                        <sourceDirectory>thrift-confignode/target/generated-sources/thrift</sourceDirectory>
                        <sourceDirectory>thrift-multi-leader-consensus/target/generated-sources/thrift</sourceDirectory>
                        <sourceDirectory>thrift-sync/target/generated-sources/thrift</sourceDirectory>
                        <sourceDirectory>thrift-cluster/target/generated-sources/thrift</sourceDirectory>
                        <sourceDirectory>thrift-influxdb/target/generated-sources/thrift</sourceDirectory>
                        <sourceDirectory>openapi/target/generated-sources/java/src/gen/java</sourceDirectory>
                        <sourceDirectory>openapi/target/generated-sources/java/src/main/java</sourceDirectory>
                        <sourceDirectory>spark-iotdb-connector/src/main/scala</sourceDirectory>
                        <sourceDirectory>spark-tsfile/src/main/scala</sourceDirectory>
                    </sourceDirectories>
                </configuration>
                <!-- JDK11 removes the following libs. We have to add them-->
                <dependencies>
                    <dependency>
                        <groupId>javax.xml.bind</groupId>
                        <artifactId>jaxb-api</artifactId>
                        <version>2.4.0-b180830.0359</version>
                    </dependency>
                    <dependency>
                        <groupId>com.sun.xml.bind</groupId>
                        <artifactId>jaxb-core</artifactId>
                        <version>2.3.0</version>
                    </dependency>
                    <dependency>
                        <groupId>com.sun.xml.bind</groupId>
                        <artifactId>jaxb-impl</artifactId>
                        <version>2.3.6</version>
                    </dependency>
                </dependencies>
            </plugin>
            <!--
                      Strange things usually happen if you run with a too low Java version.
                      This plugin not only checks the minimum java version of 1.8, but also
                      checks all dependencies (and transitive dependencies) for reported CVEs.
                    -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>3.0.0-M2</version>
                <!--$NO-MVN-MAN-VER$-->
                <executions>
                    <!-- Ensure we're not mixing dependency versions -->
                    <execution>
                        <id>enforce-version-convergence</id>
                        <phase>validate</phase>
                        <configuration>
                            <rules>
                                <dependencyConvergence/>
                            </rules>
                        </configuration>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                    </execution>
                    <!--
                        Fails the build if classes are included from multiple
                        artifacts and these are not identical.
                    -->
                    <!--execution>
                        <id>enforce-ban-duplicate-classes</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <rules>
                                <banDuplicateClasses>
                                    <scopes>
                                        <scope>compile</scope>
                                        <scope>provided</scope>
                                    </scopes>
                                    <findAllDuplicates>true</findAllDuplicates>
                                    <ignoreWhenIdentical>true</ignoreWhenIdentical>
                                </banDuplicateClasses>
                            </rules>
                            <fail>true</fail>
                        </configuration>
                    </execution-->
                    <!-- Make sure no dependencies are used for which known vulnerabilities exist. -->
                    <execution>
                        <id>vulnerability-checks</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <!-- Just generate warnings for now -->
                            <fail>false</fail>
                            <rules>
                                <requireJavaVersion>
                                    <version>1.8.0</version>
                                </requireJavaVersion>
                                <!-- Disabled for now as it breaks the ability to build single modules -->
                                <!--reactorModuleConvergence/-->
                                <banVulnerable implementation="org.sonatype.ossindex.maven.enforcer.BanVulnerableDependencies"/>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.sonatype.ossindex.maven</groupId>
                        <artifactId>ossindex-maven-enforcer-rules</artifactId>
                        <version>1.0.0</version>
                    </dependency>
                    <dependency>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>extra-enforcer-rules</artifactId>
                        <version>1.4</version>
                    </dependency>
                </dependencies>
            </plugin>
            <!--
              Even if Maven transitively pulls in dependencies, relying on these can
              quite often cause hard to find problems. So it's a good practice to make
              sure everything directly required is also directly added as a dependency.
              On the other side adding unused dependency only over-complicates the
              the dependency graph, so the maven-dependency-plugin checks we depend on
              what we need and only that and that runtime dependencies are correctly
              imported with runtime scope.
            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>check-dependencies</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>analyze-only</goal>
                        </goals>
                        <configuration>
                            <failOnWarning>false</failOnWarning>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>net.revelc.code.formatter</groupId>
                <artifactId>formatter-maven-plugin</artifactId>
                <version>2.8.1</version>
            </plugin>
            <!--for code style check -->
            <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>8.45.1</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>validate</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                        <configuration>
                            <outputFile>target/checkstyle-report.xml</outputFile>
                            <configLocation>checkstyle.xml</configLocation>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                    <configLocation>checkstyle.xml</configLocation>
                    <includeTestSourceDirectory>true</includeTestSourceDirectory>
                </configuration>
            </plugin>
            <!--
              Check if all files contain Apache headers in them.
              Ignore this plugin, we use license-maven-plugin to check apache header.
            -->
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <executions>
                    <execution>
                        <id>license-check</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>au.com.acegi</groupId>
                <artifactId>xml-format-maven-plugin</artifactId>
                <version>3.0.7</version>
                <executions>
                    <execution>
                        <id>xml-format</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>xml-format</goal>
                        </goals>
                        <configuration>
                            <!-- configure your formatting preferences here (see link below) -->
                            <indentSize>4</indentSize>
                            <excludes>
                                <exclude>**/target/**</exclude>
                                <exclude>**/checkstyle.xml</exclude>
                                <exclude>**/import-control.xml</exclude>
                            </excludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--
              Generate the legally required text files in the jars
            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-remote-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>process-resource-bundles</id>
                        <goals>
                            <goal>process</goal>
                        </goals>
                        <configuration>
                            <resourceBundles>
                                <!-- Will generate META-INF/{DEPENDENCIES,LICENSE,NOTICE} -->
                                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
                            </resourceBundles>
                            <!-- Content in this directory will be appended to generated resources -->
                            <appendedResourcesDirectory>${basedir}/src/remote-resources</appendedResourcesDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <!-- Separates the unit tests from the integration tests. -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <executions>
                    <execution>
                        <id>unit-tests</id>
                        <phase>test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <includes>
                                <!-- Include unit tests within integration-test phase. -->
                                <include>src/test/**/*Test.java</include>
                            </includes>
                            <excludes>
                                <!-- Exclude integration tests within (unit) test phase. -->
                                <exclude>src/test/**/*IT.java</exclude>
                            </excludes>
                        </configuration>
                    </execution>
                    <execution>
                        <id>integration-tests</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <includes>
                                <!-- Include integration tests within integration-test phase. -->
                                <include>src/test/**/*IT.java</include>
                            </includes>
                            <excludes>
                                <!-- Exclude unit tests within (unit) test phase. -->
                                <exclude>src/test/**/*Test.java</exclude>
                            </excludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- Also package the sources as jar -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>create-source-package</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <!-- spotless is too slow, so we put it into a profile to skip it if needed -->
        <!-- currently spotless cannot run on jdk16, due to JEP 396: Strongly Encapsulate JDK Internals by Default-->
        <profile>
            <id>spotless</id>
            <activation>
                <!-- activeByDefault does not take effect-->
                <jdk>[1.8,16)</jdk>
                <file>
                    <exists>.</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.diffplug.spotless</groupId>
                        <artifactId>spotless-maven-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!--
          A set of profiles defining the different properties needed to download and run thrift
          They are automatically activated depending on the OS you are using.
        -->
        <profile>
            <id>windows</id>
            <activation>
                <os>
                    <family>windows</family>
                </os>
            </activation>
            <properties>
                <os.classifier>windows-x86_64</os.classifier>
                <thrift.download-url>http://archive.apache.org/dist/thrift/${thrift.version}/thrift-${thrift.version}.exe</thrift.download-url>
                <thrift.executable>thrift-${thrift.version}-win-x86_64.exe</thrift.executable>
                <thrift.skip-making-executable>true</thrift.skip-making-executable>
                <thrift.exec-cmd.executable>echo</thrift.exec-cmd.executable>
                <thrift.exec-cmd.args>"Do nothing"</thrift.exec-cmd.args>
            </properties>
        </profile>
        <!-- Has to be listed before "mac" as it seems a mac is both "mac" and "unix" -->
        <profile>
            <id>unix</id>
            <activation>
                <os>
                    <family>unix</family>
                </os>
            </activation>
            <properties>
                <os.classifier>linux-x86_64</os.classifier>
                <thrift.download-url>https://github.com/apache/iotdb-bin-resources/raw/main/compile-tools/thrift-0.14-ubuntu</thrift.download-url>
                <thrift.executable>thrift_0.14.1_linux.exe</thrift.executable>
                <thrift.skip-making-executable>false</thrift.skip-making-executable>
                <thrift.exec-cmd.executable>chmod</thrift.exec-cmd.executable>
                <thrift.exec-cmd.args>+x ${project.build.directory}/tools/${thrift.executable}</thrift.exec-cmd.args>
            </properties>
        </profile>
        <profile>
            <id>mac</id>
            <activation>
                <os>
                    <family>mac</family>
                </os>
            </activation>
            <properties>
                <os.classifier>mac-x86_64</os.classifier>
                <thrift.download-url>https://github.com/apache/iotdb-bin-resources/raw/main/compile-tools/thrift-0.14-MacOS</thrift.download-url>
                <thrift.executable>thrift_0.14.1_mac.exe</thrift.executable>
                <thrift.skip-making-executable>false</thrift.skip-making-executable>
                <thrift.exec-cmd.executable>chmod</thrift.exec-cmd.executable>
                <thrift.exec-cmd.args>+x ${project.build.directory}/tools/${thrift.executable}</thrift.exec-cmd.args>
            </properties>
        </profile>
        <!-- for TestContainer. As it requires docker, we have to detect whether docker exists.-->
        <profile>
            <!-- Mac and Unix-->
            <id>unixDockerCheck</id>
            <activation>
                <file>
                    <exists>/var/run/docker.sock</exists>
                </file>
            </activation>
            <modules>
                <module>testcontainer</module>
            </modules>
        </profile>
        <profile>
            <id>WinDockerCheck</id>
            <activation>
                <file>
                    <exists>C:\Program Files\Docker\Docker\resources\bin\docker.exe</exists>
                </file>
            </activation>
            <modules>
                <module>testcontainer</module>
            </modules>
        </profile>
        <!-- Some APIs were removed in Java 11, so we need to add replacements -->
        <profile>
            <id>java-11-and-above</id>
            <activation>
                <!-- This needs to be updated as soon as Java 20 is shipped -->
                <jdk>[11,20)</jdk>
            </activation>
            <properties>
                <maven.compiler.release>8</maven.compiler.release>
                <!-- change to 1.15.0 will modify many codes (all are javadocs), we change it to 1.15.0
                until: 1. spotless + jdk16 is fixed; and 2. iotdb decides to do not support jdk8-->
                <google.java.format.version>1.7</google.java.format.version>
            </properties>
            <dependencies>
                <!-- for jdk-11 -->
                <dependency>
                    <groupId>javax.annotation</groupId>
                    <artifactId>javax.annotation-api</artifactId>
                </dependency>
                <dependency>
                    <groupId>javax.xml.bind</groupId>
                    <artifactId>jaxb-api</artifactId>
                </dependency>
                <dependency>
                    <groupId>org.glassfish.jaxb</groupId>
                    <artifactId>jaxb-runtime</artifactId>
                </dependency>
            </dependencies>
        </profile>
        <!-- Add argLine for Java 16 and above, due to [JEP 396: Strongly Encapsulate JDK Internals by Default]
          (https://openjdk.java.net/jeps/396) -->
        <profile>
            <id>java-16-and-above</id>
            <activation>
                <!-- This needs to be updated as soon as Java 20 is shipped -->
                <jdk>[16,20)</jdk>
            </activation>
            <properties>
                <maven.compiler.release>8</maven.compiler.release>
                <argLine>--illegal-access=permit --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</argLine>
            </properties>
        </profile>
        <!--
          Self activating profile, that activates itself as soon as a "src/main/thrift" directory is found.
          The different plugins here download the thrift executable matching the current os, make that
          executable (on mac and unix/linux) and run the code generation.

          Note to the Download: The download-maven-plugin checks if a resource is previously downloaded
          and only downloads each file once. It caches downloaded files in:
          {maven local repo}/.cache/download-maven-plugin
        -->
        <profile>
            <id>thrift-generation</id>
            <activation>
                <file>
                    <exists>src/main/thrift</exists>
                </file>
            </activation>
            <properties>
                <thrift.exec.absolute.path>${project.build.directory}/tools/${thrift.executable}</thrift.exec.absolute.path>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.googlecode.maven-download-plugin</groupId>
                        <artifactId>download-maven-plugin</artifactId>
                        <version>1.6.7</version>
                        <executions>
                            <execution>
                                <id>get-thrift-executable</id>
                                <phase>generate-sources</phase>
                                <goals>
                                    <goal>wget</goal>
                                </goals>
                                <configuration>
                                    <url>${thrift.download-url}</url>
                                    <outputDirectory>${project.build.directory}/tools</outputDirectory>
                                    <outputFileName>${thrift.executable}</outputFileName>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>exec-maven-plugin</artifactId>
                        <version>1.6.0</version>
                        <executions>
                            <execution>
                                <id>make-thrift-executable-executable</id>
                                <phase>generate-sources</phase>
                                <goals>
                                    <goal>exec</goal>
                                </goals>
                                <configuration>
                                    <skip>${thrift.skip-making-executable}</skip>
                                    <executable>${thrift.exec-cmd.executable}</executable>
                                    <commandlineArgs>${thrift.exec-cmd.args}</commandlineArgs>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.thrift.tools</groupId>
                        <artifactId>maven-thrift-plugin</artifactId>
                        <version>0.1.11</version>
                        <executions>
                            <execution>
                                <id>generate-thrift-sources-java</id>
                                <phase>generate-sources</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <generator>java</generator>
                                    <thriftExecutable>${thrift.exec.absolute.path}</thriftExecutable>
                                    <thriftSourceRoot>${basedir}/src/main/thrift</thriftSourceRoot>
                                </configuration>
                            </execution>
                            <execution>
                                <id>generate-thrift-sources-python</id>
                                <phase>generate-sources</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <generator>py</generator>
                                    <thriftExecutable>${thrift.exec.absolute.path}</thriftExecutable>
                                    <thriftSourceRoot>${basedir}/src/main/thrift</thriftSourceRoot>
                                    <includes>**/common.thrift,**/client.thrift</includes>
                                    <outputDirectory>${project.build.directory}/generated-sources-python/</outputDirectory>
                                </configuration>
                            </execution>
                            <execution>
                                <id>generate-thrift-sources-go</id>
                                <phase>generate-sources</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <generator>go</generator>
                                    <thriftExecutable>${thrift.exec.absolute.path}</thriftExecutable>
                                    <thriftSourceRoot>${basedir}/src/main/thrift</thriftSourceRoot>
                                    <includes>**/common.thrift,**/client.thrift</includes>
                                    <outputDirectory>${project.build.directory}/generated-sources-go</outputDirectory>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!-- Make sure the source assembly has the right name -->
        <profile>
            <id>apache-release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>${maven.assembly.version}</version>
                        <executions>
                            <execution>
                                <id>source-release-assembly</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <!-- heads up: combine.self in the following is highlighted
                                    as an error in Eclipse's xml editor view.
                                    Just ignore that.
                                    See  https://issues.apache.org/jira/browse/MNG-5454  sigh.
                                 -->
                                <configuration combine.self="append">
                                    <finalName>apache-iotdb-${project.version}</finalName>
                                    <archive>
                                        <manifest>
                                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                                        </manifest>
                                    </archive>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <!--
                      Create SHA512 checksum files for the release artifacts.
                    -->
                    <plugin>
                        <groupId>net.nicoulaj.maven.plugins</groupId>
                        <artifactId>checksum-maven-plugin</artifactId>
                        <version>1.8</version>
                        <executions>
                            <execution>
                                <id>sign-source-release</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>files</goal>
                                </goals>
                                <configuration>
                                    <algorithms>
                                        <algorithm>SHA-512</algorithm>
                                    </algorithms>
                                    <fileSets>
                                        <fileSet>
                                            <directory>${project.build.directory}</directory>
                                            <includes>
                                                <include>apache-iotdb-${project.version}-source-release.zip</include>
                                            </includes>
                                        </fileSet>
                                    </fileSets>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!-- enable site-->
        <!-- use `mvn package -P site -pl site` to compile the site module only -->
        <profile>
            <id>site</id>
            <modules>
                <module>site</module>
            </modules>
        </profile>
        <!-- code coverage for ut and it, and then merge them together.-->
        <profile>
            <id>code-coverage</id>
            <modules>
                <module>code-coverage</module>
            </modules>
            <build>
                <plugins>
                    <!-- Jacoco is a code coverage analysis plugin when tests run.
                    (not a static code analysis tool)-->
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <version>0.8.7</version>
                        <configuration>
                            <excludes>
                                <exclude>org/apache/iotdb/service/sync/thrift/*</exclude>
                                <exclude>org/apache/iotdb/service/rpc/thrift/*</exclude>
                                <exclude>org/apache/iotdb/protocol/influxdb/rpc/thrift/*</exclude>
                                <exclude>org/apache/iotdb/db/qp/sql/*</exclude>
                            </excludes>
                            <rules>
                                <rule implementation="org.jacoco.maven.RuleConfiguration">
                                    <element>BUNDLE</element>
                                    <limits>　　
                                        <!-- Cover methodes >=30%. (the plugin does not support
                                        ignore getter and setter and toString etc..) -->
                                        <limit implementation="org.jacoco.report.check.Limit">
                                            <counter>METHOD</counter>
                                            <value>COVEREDRATIO</value>
                                            <minimum>0.00</minimum>
                                        </limit>
                                        <!-- if-else, swtich etc.. >=70% -->
                                        <limit implementation="org.jacoco.report.check.Limit">
                                            <counter>BRANCH</counter>
                                            <value>COVEREDRATIO</value>
                                            <minimum>0.00</minimum>
                                        </limit>
                                        <!-- class files >=95% -->
                                        <limit implementation="org.jacoco.report.check.Limit">
                                            <counter>CLASS</counter>
                                            <value>COVEREDRATIO</value>
                                            <minimum>0.00</minimum>
                                        </limit>
                                    </limits>
                                </rule>
                            </rules>
                        </configuration>
                        <executions>
                            <!-- see https://natritmeyer.com/howto/reporting-aggregated-unit-and-integration-test-coverage-with-jacoco/-->
                            <!-- For UT-->
                            <execution>
                                <id>prepare-ut</id>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                                <configuration>
                                    <destFile>${project.build.directory}/${project.build.finalName}-jacoco-unit-tests.exec</destFile>
                                    <propertyName>surefire.jacoco.args</propertyName>
                                </configuration>
                            </execution>
                            <!-- attached to Maven test phase -->
                            <execution>
                                <id>ut-report</id>
                                <phase>test</phase>
                                <goals>
                                    <goal>report</goal>
                                    <goal>check</goal>
                                </goals>
                                <configuration>
                                    <dataFile>${project.build.directory}/${project.build.finalName}-jacoco-unit-tests.exec</dataFile>
                                    <outputDirectory>${project.build.directory}/jacoco-unit-reports</outputDirectory>
                                </configuration>
                            </execution>
                            <!-- For IT-->
                            <execution>
                                <id>before-integration-test-execution</id>
                                <phase>pre-integration-test</phase>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                                <configuration>
                                    <destFile>${project.build.directory}/${project.build.finalName}-jacoco-integration-tests.exec</destFile>
                                    <propertyName>failsafe.jacoco.args</propertyName>
                                </configuration>
                            </execution>
                            <execution>
                                <id>after-integration-test-execution</id>
                                <phase>integration-test</phase>
                                <goals>
                                    <goal>report</goal>
                                    <goal>check</goal>
                                </goals>
                                <configuration>
                                    <dataFile>${project.build.directory}/${project.build.finalName}-jacoco-integration-tests.exec</dataFile>
                                    <outputDirectory>${project.build.directory}/jacoco-integration-reports</outputDirectory>
                                </configuration>
                            </execution>
                            <execution>
                                <id>merge-unit-and-integration</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>merge</goal>
                                </goals>
                                <configuration>
                                    <fileSets>
                                        <fileSet>
                                            <directory>${project.build.directory}/</directory>
                                            <includes>
                                                <include>*.exec</include>
                                            </includes>
                                        </fileSet>
                                    </fileSets>
                                    <destFile>${project.build.directory}/${project.build.finalName}-merged.exec</destFile>
                                </configuration>
                            </execution>
                            <execution>
                                <id>create-merged-report</id>
                                <phase>post-integration-test</phase>
                                <goals>
                                    <goal>report</goal>
                                    <goal>check</goal>
                                </goals>
                                <configuration>
                                    <dataFile>${project.build.directory}/${project.build.finalName}-merged.exec</dataFile>
                                    <outputDirectory>${project.build.directory}/jacoco-merged-reports</outputDirectory>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- overwrite argLine-->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <argLine>${argLine} @{surefire.jacoco.args} -Xmx1024m</argLine>
                        </configuration>
                    </plugin>
                    <!-- for IT-->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <configuration>
                            <argLine>${argLine} @{failsafe.jacoco.args} -Xmx1024m</argLine>
                        </configuration>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>integration-test</goal>
                                    <goal>verify</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!-- upload code coverage report to coveralls.io-->
        <!-- to enable coveralls locally, you need to get the repoToken from https://coveralls.io/github/apache/iotdb.
             use `mvn post-integration-test -Pcode-coverage -DrepoToken=TOKEN`-->
        <profile>
            <id>enforce</id>
            <properties>
                <enforcer.skip>false</enforcer.skip>
            </properties>
        </profile>
    </profiles>
</project>
