You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by cd...@apache.org on 2023/07/27 14:39:27 UTC

[iotdb] branch feature/pom-cleanup created (now ce559fb8a4f)

This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a change to branch feature/pom-cleanup
in repository https://gitbox.apache.org/repos/asf/iotdb.git


      at ce559fb8a4f build: Cleaned up the poms to match the directory structure and be displayed in IDEs nicer. build: Fixed a number of small issues in the profiles and plugin configurations.

This branch includes the following new commits:

     new ce559fb8a4f build: Cleaned up the poms to match the directory structure and be displayed in IDEs nicer. build: Fixed a number of small issues in the profiles and plugin configurations.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[iotdb] 01/01: build: Cleaned up the poms to match the directory structure and be displayed in IDEs nicer. build: Fixed a number of small issues in the profiles and plugin configurations.

Posted by cd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch feature/pom-cleanup
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit ce559fb8a4fbf513b64c6b8d68723b441ab3b707
Author: Christofer Dutz <cd...@apache.org>
AuthorDate: Thu Jul 27 16:39:14 2023 +0200

    build: Cleaned up the poms to match the directory structure and be displayed in IDEs nicer.
    build: Fixed a number of small issues in the profiles and plugin configurations.
---
 distribution/pom.xml                               |   4 +-
 example/client-cpp-example/pom.xml                 |  19 +-
 example/flink/pom.xml                              |   4 +-
 example/hadoop/pom.xml                             |   3 +-
 example/jdbc/pom.xml                               |   4 +-
 example/kafka/pom.xml                              |   9 +-
 example/mqtt-customize/pom.xml                     |   4 +-
 example/mqtt/pom.xml                               |   4 +-
 example/pom.xml                                    |   5 +-
 example/pulsar/pom.xml                             |   6 +-
 example/rabbitmq/pom.xml                           |   4 +-
 example/rest-java-example/pom.xml                  |   3 +-
 example/rocketmq/pom.xml                           |   4 +-
 example/session/pom.xml                            |   4 +-
 example/trigger/pom.xml                            |  72 +-----
 example/tsfile/pom.xml                             |   3 +-
 example/udf/pom.xml                                |  71 +-----
 integration-test/pom.xml                           | 226 ++++++++---------
 iotdb-api/external-api/pom.xml                     |   6 +-
 iotdb-api/pipe-api/pom.xml                         |  22 +-
 {iotdb-client/isession => iotdb-api}/pom.xml       |  22 +-
 iotdb-api/trigger-api/pom.xml                      |  32 +--
 iotdb-api/udf-api/pom.xml                          |   6 +-
 iotdb-client/cli/pom.xml                           | 147 ++++++-----
 iotdb-client/client-cpp/pom.xml                    |   7 +-
 iotdb-client/client-py/pom.xml                     |  29 +--
 iotdb-client/compile-tools/pom.xml                 |   5 +-
 iotdb-client/compile-tools/thrift/pom.xml          |   4 +-
 iotdb-client/isession/pom.xml                      |   6 +-
 iotdb-client/jdbc/pom.xml                          |  59 +++--
 iotdb-client/{isession => }/pom.xml                |  26 +-
 iotdb-client/service-rpc/pom.xml                   |  77 +++---
 iotdb-client/session/pom.xml                       |   7 +-
 iotdb-connector/flink-iotdb-connector/pom.xml      |   5 +-
 iotdb-connector/flink-tsfile-connector/pom.xml     |   5 +-
 iotdb-connector/grafana-connector/pom.xml          | 101 ++++----
 iotdb-connector/grafana-plugin/pom.xml             |   7 +-
 iotdb-connector/hadoop/pom.xml                     |  89 ++++---
 iotdb-connector/hive-connector/pom.xml             | 141 +++++------
 {iotdb-client/isession => iotdb-connector}/pom.xml |  27 +-
 iotdb-connector/spark-iotdb-connector/pom.xml      |  71 +++++-
 .../spark-iotdb-connector/scala_2.11/pom.xml       |  70 +----
 .../spark-iotdb-connector/scala_2.12/pom.xml       |  78 +-----
 iotdb-connector/spark-tsfile/pom.xml               |  46 ++--
 iotdb-connector/zeppelin-interpreter/pom.xml       |  30 +--
 iotdb-core/antlr/pom.xml                           |  17 +-
 iotdb-core/confignode/pom.xml                      |  77 +++---
 iotdb-core/consensus/pom.xml                       |  61 +++--
 iotdb-core/datanode/pom.xml                        | 281 ++++++++++-----------
 iotdb-core/metrics/dropwizard-metrics/pom.xml      |  13 +-
 iotdb-core/metrics/interface/pom.xml               |  36 ++-
 iotdb-core/metrics/micrometer-metrics/pom.xml      |   5 +-
 iotdb-core/metrics/pom.xml                         |   8 +-
 iotdb-core/mlnode/pom.xml                          |  49 ++--
 iotdb-core/node-commons/pom.xml                    | 211 ++++++++--------
 .../commons/executable/ExecutableManager.java      |   3 +
 .../iotdb/commons/file/SystemFileFactory.java      |  19 +-
 {iotdb-client/isession => iotdb-core}/pom.xml      |  26 +-
 iotdb-core/tsfile/pom.xml                          | 146 ++++++-----
 iotdb-protocol/openapi/pom.xml                     |   6 +-
 {iotdb-client/isession => iotdb-protocol}/pom.xml  |  24 +-
 iotdb-protocol/thrift-commons/pom.xml              |  17 +-
 iotdb-protocol/thrift-confignode/pom.xml           |  27 +-
 iotdb-protocol/thrift-iot-consensus/pom.xml        |  27 +-
 iotdb-protocol/thrift-mlnode/pom.xml               |  27 +-
 iotdb-protocol/thrift/pom.xml                      |  27 +-
 library-udf/pom.xml                                |   4 +-
 pom.xml                                            |  62 ++---
 68 files changed, 1231 insertions(+), 1516 deletions(-)

diff --git a/distribution/pom.xml b/distribution/pom.xml
index 15826a0523c..4df0a0fce2a 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -25,11 +25,9 @@
         <groupId>org.apache.iotdb</groupId>
         <artifactId>iotdb-parent</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>iotdb-distribution</artifactId>
-    <name>IoTDB Distribution</name>
-    <modules/>
+    <name>IoTDB: Distribution</name>
     <build>
         <plugins>
             <plugin>
diff --git a/example/client-cpp-example/pom.xml b/example/client-cpp-example/pom.xml
index f13bd6aeb74..9b06b50ad28 100644
--- a/example/client-cpp-example/pom.xml
+++ b/example/client-cpp-example/pom.xml
@@ -25,14 +25,21 @@
         <groupId>org.apache.iotdb</groupId>
         <artifactId>iotdb-examples</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>client-cpp-example</artifactId>
-    <name>IoTDB-Client CPP Examples</name>
+    <name>IoTDB: Example: CPP Client</name>
     <properties>
         <cmake-version>3.17.3</cmake-version>
         <cmake.build.type>Release</cmake.build.type>
     </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>client-cpp</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+        </dependency>
+    </dependencies>
     <profiles>
         <profile>
             <id>os-unix</id>
@@ -187,12 +194,4 @@
             </build>
         </profile>
     </profiles>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>client-cpp</artifactId>
-            <version>${project.version}</version>
-            <type>pom</type>
-        </dependency>
-    </dependencies>
 </project>
diff --git a/example/flink/pom.xml b/example/flink/pom.xml
index b36b6f5edc1..32315866f38 100644
--- a/example/flink/pom.xml
+++ b/example/flink/pom.xml
@@ -25,11 +25,9 @@
         <groupId>org.apache.iotdb</groupId>
         <artifactId>iotdb-examples</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>flink-example</artifactId>
-    <name>IoTDB-Flink Examples</name>
-    <packaging>jar</packaging>
+    <name>IoTDB: Example: Apache Flink</name>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/example/hadoop/pom.xml b/example/hadoop/pom.xml
index 2504ad2fe07..40c350f0cdc 100644
--- a/example/hadoop/pom.xml
+++ b/example/hadoop/pom.xml
@@ -25,10 +25,9 @@
         <artifactId>iotdb-examples</artifactId>
         <groupId>org.apache.iotdb</groupId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>hadoop-example</artifactId>
-    <name>hadoop-example</name>
+    <name>IoTDB: Example: Apache Hadoop</name>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/example/jdbc/pom.xml b/example/jdbc/pom.xml
index e9968a26e26..4c93104beea 100644
--- a/example/jdbc/pom.xml
+++ b/example/jdbc/pom.xml
@@ -20,14 +20,14 @@
 
 -->
 <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>
         <artifactId>iotdb-examples</artifactId>
         <groupId>org.apache.iotdb</groupId>
         <version>1.3.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
     <artifactId>jdbc-example</artifactId>
-    <name>jdbc example</name>
+    <name>IoTDB: Example: JDBC</name>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>1.7</maven.compiler.source>
diff --git a/example/kafka/pom.xml b/example/kafka/pom.xml
index ccb99176a99..f2bababd130 100644
--- a/example/kafka/pom.xml
+++ b/example/kafka/pom.xml
@@ -21,20 +21,13 @@
 -->
 <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>
-    <!-- you need to add the following content if you remove the parent pom.
-  <groupId>org.apache.iotdb.example</groupId>
-  <artifactId>kafka-example</artifactId>
-  <version>1.0.0</version>
-  -->
     <parent>
         <groupId>org.apache.iotdb</groupId>
         <artifactId>iotdb-examples</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>kafka-example</artifactId>
-    <name>IoTDB-Kafka Examples</name>
-    <packaging>jar</packaging>
+    <name>IoTDB: Example: Apache Kafka</name>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/example/mqtt-customize/pom.xml b/example/mqtt-customize/pom.xml
index ac44c2c8604..45bd54519d7 100644
--- a/example/mqtt-customize/pom.xml
+++ b/example/mqtt-customize/pom.xml
@@ -25,11 +25,9 @@
         <groupId>org.apache.iotdb</groupId>
         <artifactId>iotdb-examples</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>customize-mqtt-example</artifactId>
-    <name>Customized IoTDB-MQTT Examples</name>
-    <packaging>jar</packaging>
+    <name>IoTDB: Example: Customized MQTT</name>
     <dependencies>
         <!-- used by the server-->
         <dependency>
diff --git a/example/mqtt/pom.xml b/example/mqtt/pom.xml
index 8e2c3357375..94df095e86e 100644
--- a/example/mqtt/pom.xml
+++ b/example/mqtt/pom.xml
@@ -25,11 +25,9 @@
         <groupId>org.apache.iotdb</groupId>
         <artifactId>iotdb-examples</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>mqtt-example</artifactId>
-    <name>IoTDB-MQTT Examples</name>
-    <packaging>jar</packaging>
+    <name>IoTDB: Example: MQTT</name>
     <dependencies>
         <dependency>
             <groupId>org.fusesource.mqtt-client</groupId>
diff --git a/example/pom.xml b/example/pom.xml
index 1256cd0ee89..21feb6db629 100644
--- a/example/pom.xml
+++ b/example/pom.xml
@@ -25,11 +25,10 @@
         <groupId>org.apache.iotdb</groupId>
         <artifactId>iotdb-parent</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
-    <packaging>pom</packaging>
     <artifactId>iotdb-examples</artifactId>
-    <name>IoTDB Examples</name>
+    <packaging>pom</packaging>
+    <name>IoTDB: Examples</name>
     <properties>
         <zookeeper.version>3.4.14</zookeeper.version>
     </properties>
diff --git a/example/pulsar/pom.xml b/example/pulsar/pom.xml
index 42070502e90..c911f289ed2 100644
--- a/example/pulsar/pom.xml
+++ b/example/pulsar/pom.xml
@@ -20,16 +20,14 @@
 
 -->
 <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>
         <artifactId>iotdb-examples</artifactId>
         <groupId>org.apache.iotdb</groupId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
     <artifactId>pulsar-example</artifactId>
-    <name>IoTDB-Pulsar Examples</name>
-    <packaging>jar</packaging>
+    <name>IoTDB: Example: Apache Pulsar</name>
     <dependencies>
         <dependency>
             <groupId>org.apache.pulsar</groupId>
diff --git a/example/rabbitmq/pom.xml b/example/rabbitmq/pom.xml
index 01bb7b10269..b75b8217def 100644
--- a/example/rabbitmq/pom.xml
+++ b/example/rabbitmq/pom.xml
@@ -25,11 +25,9 @@
         <groupId>org.apache.iotdb</groupId>
         <artifactId>iotdb-examples</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>rabbitmq-example</artifactId>
-    <name>IoTDB-RabbitMQ Examples</name>
-    <packaging>jar</packaging>
+    <name>IoTDB: Example: RabbitMQ</name>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/example/rest-java-example/pom.xml b/example/rest-java-example/pom.xml
index 6d8908f106d..7efd049df0b 100644
--- a/example/rest-java-example/pom.xml
+++ b/example/rest-java-example/pom.xml
@@ -20,13 +20,14 @@
 
 -->
 <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>
         <artifactId>iotdb-examples</artifactId>
         <groupId>org.apache.iotdb</groupId>
         <version>1.3.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
     <artifactId>rest-java-example</artifactId>
+    <name>IoTDB: Example: Java Rest</name>
     <properties>
         <maven.compiler.source>1.8</maven.compiler.source>
         <maven.compiler.target>1.8</maven.compiler.target>
diff --git a/example/rocketmq/pom.xml b/example/rocketmq/pom.xml
index 475d1d9b742..fdb3afe45e3 100644
--- a/example/rocketmq/pom.xml
+++ b/example/rocketmq/pom.xml
@@ -25,11 +25,9 @@
         <groupId>org.apache.iotdb</groupId>
         <artifactId>iotdb-examples</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>rocketmq-example</artifactId>
-    <name>IoTDB-RocketMQ Examples</name>
-    <packaging>jar</packaging>
+    <name>IoTDB: Example: Apache RocketMQ</name>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/example/session/pom.xml b/example/session/pom.xml
index 631ff8f1c6a..47964f328f7 100644
--- a/example/session/pom.xml
+++ b/example/session/pom.xml
@@ -20,14 +20,14 @@
 
 -->
 <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>
         <artifactId>iotdb-examples</artifactId>
         <groupId>org.apache.iotdb</groupId>
         <version>1.3.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
     <artifactId>client-example</artifactId>
-    <name>client-example</name>
+    <name>IoTDB: Example: Session Client</name>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>1.7</maven.compiler.source>
diff --git a/example/trigger/pom.xml b/example/trigger/pom.xml
index 4ab85f18d95..fc5393c3429 100644
--- a/example/trigger/pom.xml
+++ b/example/trigger/pom.xml
@@ -25,9 +25,9 @@
         <groupId>org.apache.iotdb</groupId>
         <artifactId>iotdb-examples</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>trigger-example</artifactId>
+    <name>IoTDB: Example: Trigger</name>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
@@ -41,36 +41,6 @@
             <version>${project.version}</version>
         </dependency>
     </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.8.1</version>
-                <configuration>
-                    <source>8</source>
-                    <target>8</target>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.rat</groupId>
-                <artifactId>apache-rat-plugin</artifactId>
-                <version>0.13</version>
-                <configuration>
-                    <consoleOutput>false</consoleOutput>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>license-check</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
     <profiles>
         <profile>
             <id>get-jar-with-dependencies</id>
@@ -99,45 +69,5 @@
                 </plugins>
             </build>
         </profile>
-        <profile>
-            <id>spotless</id>
-            <activation>
-                <jdk>[1.8,16)</jdk>
-                <!-- activeByDefault does not take effect-->
-                <file>
-                    <exists>.</exists>
-                </file>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>com.diffplug.spotless</groupId>
-                        <artifactId>spotless-maven-plugin</artifactId>
-                        <version>${spotless.version}</version>
-                        <configuration>
-                            <java>
-                                <googleJavaFormat>
-                                    <version>1.7</version>
-                                    <style>GOOGLE</style>
-                                </googleJavaFormat>
-                                <importOrder>
-                                    <order>org.apache.iotdb,,javax,java,\#</order>
-                                </importOrder>
-                                <removeUnusedImports/>
-                            </java>
-                        </configuration>
-                        <executions>
-                            <execution>
-                                <id>spotless-check</id>
-                                <phase>validate</phase>
-                                <goals>
-                                    <goal>check</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
     </profiles>
 </project>
diff --git a/example/tsfile/pom.xml b/example/tsfile/pom.xml
index 7c47f6915ed..3b69b3a5e1e 100644
--- a/example/tsfile/pom.xml
+++ b/example/tsfile/pom.xml
@@ -25,10 +25,9 @@
         <groupId>org.apache.iotdb</groupId>
         <artifactId>iotdb-examples</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>tsfile-example</artifactId>
-    <name>tsfile-example</name>
+    <name>IoTDB: Example: TSFile</name>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/example/udf/pom.xml b/example/udf/pom.xml
index b63d72b38ee..e21b8b60d86 100644
--- a/example/udf/pom.xml
+++ b/example/udf/pom.xml
@@ -25,9 +25,9 @@
         <groupId>org.apache.iotdb</groupId>
         <artifactId>iotdb-examples</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>udf-example</artifactId>
+    <name>IoTDB: Example: UDF</name>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
@@ -36,36 +36,6 @@
             <scope>provided</scope>
         </dependency>
     </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.8.1</version>
-                <configuration>
-                    <source>8</source>
-                    <target>8</target>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.rat</groupId>
-                <artifactId>apache-rat-plugin</artifactId>
-                <version>0.13</version>
-                <configuration>
-                    <consoleOutput>false</consoleOutput>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>license-check</id>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
     <profiles>
         <profile>
             <id>get-jar-with-dependencies</id>
@@ -94,44 +64,5 @@
                 </plugins>
             </build>
         </profile>
-        <profile>
-            <id>spotless</id>
-            <activation>
-                <!-- activeByDefault does not take effect-->
-                <file>
-                    <exists>.</exists>
-                </file>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>com.diffplug.spotless</groupId>
-                        <artifactId>spotless-maven-plugin</artifactId>
-                        <version>${spotless.version}</version>
-                        <configuration>
-                            <java>
-                                <googleJavaFormat>
-                                    <version>1.7</version>
-                                    <style>GOOGLE</style>
-                                </googleJavaFormat>
-                                <importOrder>
-                                    <order>org.apache.iotdb,,javax,java,\#</order>
-                                </importOrder>
-                                <removeUnusedImports/>
-                            </java>
-                        </configuration>
-                        <executions>
-                            <execution>
-                                <id>spotless-check</id>
-                                <phase>validate</phase>
-                                <goals>
-                                    <goal>check</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
     </profiles>
 </project>
diff --git a/integration-test/pom.xml b/integration-test/pom.xml
index 56461849058..16738877c7b 100644
--- a/integration-test/pom.xml
+++ b/integration-test/pom.xml
@@ -25,9 +25,9 @@
         <artifactId>iotdb-parent</artifactId>
         <groupId>org.apache.iotdb</groupId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>integration-test</artifactId>
+    <name>IoTDB: Integration-Test</name>
     <properties>
         <integrationTest.forkCount>1</integrationTest.forkCount>
         <integrationTest.randomSelectWriteNode>true</integrationTest.randomSelectWriteNode>
@@ -39,6 +39,118 @@
         <integrationTest.excludedGroups/>
         <integrationTest.includedGroups/>
     </properties>
+    <build>
+        <plugins>
+            <!-- skip default-test -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>default-test</id>
+                        <configuration>
+                            <skip>true</skip>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- If the test starts separate processes, we should package first -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <version>${maven.assembly.version}</version>
+                <configuration>
+                    <skipAssembly>${integrationTest.launchNodeInSameJVM}</skipAssembly>
+                </configuration>
+                <executions>
+                    <!-- Package binaries-->
+                    <execution>
+                        <id>cluster-test-assembly</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>src/assembly/mpp-test.xml</descriptor>
+                            </descriptors>
+                            <finalName>template-node</finalName>
+                            <appendAssemblyId>false</appendAssemblyId>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>cluster-test-assembly-share</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>src/assembly/mpp-share.xml</descriptor>
+                            </descriptors>
+                            <finalName>template-node-share</finalName>
+                            <appendAssemblyId>false</appendAssemblyId>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- Run integration tests -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>integration-test</id>
+                        <goals>
+                            <goal>integration-test</goal>
+                        </goals>
+                        <configuration>
+                            <groups>${integrationTest.includedGroups}</groups>
+                            <excludedGroups>${integrationTest.excludedGroups}</excludedGroups>
+                            <useSystemClassLoader>false</useSystemClassLoader>
+                            <parallel>none</parallel>
+                            <forkCount>${integrationTest.forkCount}</forkCount>
+                            <reuseForks>false</reuseForks>
+                            <systemPropertyVariables>
+                                <TestEnv>${integrationTest.testEnv}</TestEnv>
+                                <RandomSelectWriteNode>${integrationTest.randomSelectWriteNode}</RandomSelectWriteNode>
+                                <ReadAndVerifyWithMultiNode>${integrationTest.readAndVerifyWithMultiNode}</ReadAndVerifyWithMultiNode>
+                            </systemPropertyVariables>
+                            <summaryFile>target/failsafe-reports/failsafe-summary-IT.xml</summaryFile>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>verify</id>
+                        <goals>
+                            <goal>verify</goal>
+                        </goals>
+                        <configuration>
+                            <summaryFiles>
+                                <summaryFile>target/failsafe-reports/failsafe-summary-IT.xml</summaryFile>
+                            </summaryFiles>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>exec-maven-plugin</artifactId>
+                <version>1.6.0</version>
+                <configuration>
+                    <mainClass>org.apache.iotdb.it.framework.IoTDBTestReporter</mainClass>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>report</id>
+                        <phase>post-integration-test</phase>
+                        <goals>
+                            <goal>java</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
@@ -160,118 +272,6 @@
             </dependency>
         </dependencies>
     </dependencyManagement>
-    <build>
-        <plugins>
-            <!-- skip default-test -->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>default-test</id>
-                        <configuration>
-                            <skip>true</skip>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <!-- If the test starts separate processes, we should package first -->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-                <version>${maven.assembly.version}</version>
-                <configuration>
-                    <skipAssembly>${integrationTest.launchNodeInSameJVM}</skipAssembly>
-                </configuration>
-                <executions>
-                    <!-- Package binaries-->
-                    <execution>
-                        <id>cluster-test-assembly</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                        <configuration>
-                            <descriptors>
-                                <descriptor>src/assembly/mpp-test.xml</descriptor>
-                            </descriptors>
-                            <finalName>template-node</finalName>
-                            <appendAssemblyId>false</appendAssemblyId>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>cluster-test-assembly-share</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                        <configuration>
-                            <descriptors>
-                                <descriptor>src/assembly/mpp-share.xml</descriptor>
-                            </descriptors>
-                            <finalName>template-node-share</finalName>
-                            <appendAssemblyId>false</appendAssemblyId>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <!-- Run integration tests -->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-failsafe-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>integration-test</id>
-                        <goals>
-                            <goal>integration-test</goal>
-                        </goals>
-                        <configuration>
-                            <groups>${integrationTest.includedGroups}</groups>
-                            <excludedGroups>${integrationTest.excludedGroups}</excludedGroups>
-                            <useSystemClassLoader>false</useSystemClassLoader>
-                            <parallel>none</parallel>
-                            <forkCount>${integrationTest.forkCount}</forkCount>
-                            <reuseForks>false</reuseForks>
-                            <systemPropertyVariables>
-                                <TestEnv>${integrationTest.testEnv}</TestEnv>
-                                <RandomSelectWriteNode>${integrationTest.randomSelectWriteNode}</RandomSelectWriteNode>
-                                <ReadAndVerifyWithMultiNode>${integrationTest.readAndVerifyWithMultiNode}</ReadAndVerifyWithMultiNode>
-                            </systemPropertyVariables>
-                            <summaryFile>target/failsafe-reports/failsafe-summary-IT.xml</summaryFile>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>verify</id>
-                        <goals>
-                            <goal>verify</goal>
-                        </goals>
-                        <configuration>
-                            <summaryFiles>
-                                <summaryFile>target/failsafe-reports/failsafe-summary-IT.xml</summaryFile>
-                            </summaryFiles>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>exec-maven-plugin</artifactId>
-                <version>1.6.0</version>
-                <configuration>
-                    <mainClass>org.apache.iotdb.it.framework.IoTDBTestReporter</mainClass>
-                </configuration>
-                <executions>
-                    <execution>
-                        <id>report</id>
-                        <phase>post-integration-test</phase>
-                        <goals>
-                            <goal>java</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
     <profiles>
         <profile>
             <id>SimpleIT</id>
diff --git a/iotdb-api/external-api/pom.xml b/iotdb-api/external-api/pom.xml
index 9582ef72d54..174ece23530 100644
--- a/iotdb-api/external-api/pom.xml
+++ b/iotdb-api/external-api/pom.xml
@@ -20,14 +20,14 @@
 
 -->
 <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>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-api</artifactId>
         <groupId>org.apache.iotdb</groupId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
     <artifactId>external-api</artifactId>
+    <name>IoTDB: API: External API</name>
     <dependencies>
         <dependency>
             <groupId>org.apache.thrift</groupId>
diff --git a/iotdb-api/pipe-api/pom.xml b/iotdb-api/pipe-api/pom.xml
index c991b279762..54b865b5f58 100644
--- a/iotdb-api/pipe-api/pom.xml
+++ b/iotdb-api/pipe-api/pom.xml
@@ -20,14 +20,22 @@
 
 -->
 <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>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-api</artifactId>
         <groupId>org.apache.iotdb</groupId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
     <artifactId>pipe-api</artifactId>
+    <name>IoTDB: API: Pipe API</name>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>tsfile</artifactId>
+            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
     <profiles>
         <profile>
             <id>get-jar-with-dependencies</id>
@@ -57,12 +65,4 @@
             </build>
         </profile>
     </profiles>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>tsfile</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-        </dependency>
-    </dependencies>
 </project>
diff --git a/iotdb-client/isession/pom.xml b/iotdb-api/pom.xml
similarity index 80%
copy from iotdb-client/isession/pom.xml
copy to iotdb-api/pom.xml
index 1d1fee79eb1..7f85373b8c4 100644
--- a/iotdb-client/isession/pom.xml
+++ b/iotdb-api/pom.xml
@@ -20,19 +20,19 @@
 
 -->
 <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>
-        <artifactId>iotdb-parent</artifactId>
         <groupId>org.apache.iotdb</groupId>
+        <artifactId>iotdb-parent</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>isession</artifactId>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>service-rpc</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
+    <artifactId>iotdb-api</artifactId>
+    <packaging>pom</packaging>
+    <name>IoTDB: API</name>
+    <modules>
+        <module>external-api</module>
+        <module>pipe-api</module>
+        <module>trigger-api</module>
+        <module>udf-api</module>
+    </modules>
 </project>
diff --git a/iotdb-api/trigger-api/pom.xml b/iotdb-api/trigger-api/pom.xml
index 89e509a3ce6..81889096143 100644
--- a/iotdb-api/trigger-api/pom.xml
+++ b/iotdb-api/trigger-api/pom.xml
@@ -20,14 +20,27 @@
 
 -->
 <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>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-api</artifactId>
         <groupId>org.apache.iotdb</groupId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
     <artifactId>trigger-api</artifactId>
+    <name>IoTDB: API: Trigger API</name>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>tsfile</artifactId>
+            <version>${project.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.servlet</groupId>
+                    <artifactId>servlet-api</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
     <profiles>
         <profile>
             <id>get-jar-with-dependencies</id>
@@ -57,17 +70,4 @@
             </build>
         </profile>
     </profiles>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>tsfile</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>javax.servlet</groupId>
-                    <artifactId>servlet-api</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-    </dependencies>
 </project>
diff --git a/iotdb-api/udf-api/pom.xml b/iotdb-api/udf-api/pom.xml
index 09ee68a2572..973ad4b667c 100644
--- a/iotdb-api/udf-api/pom.xml
+++ b/iotdb-api/udf-api/pom.xml
@@ -20,14 +20,14 @@
 
 -->
 <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>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-api</artifactId>
         <groupId>org.apache.iotdb</groupId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
     <artifactId>udf-api</artifactId>
+    <name>IoTDB: API: UDF API</name>
     <profiles>
         <profile>
             <id>get-jar-with-dependencies</id>
diff --git a/iotdb-client/cli/pom.xml b/iotdb-client/cli/pom.xml
index 9b5bb91f126..739cb019352 100644
--- a/iotdb-client/cli/pom.xml
+++ b/iotdb-client/cli/pom.xml
@@ -23,88 +23,16 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-client</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>iotdb-cli</artifactId>
-    <name>IoTDB Cli</name>
+    <name>IoTDB: Client: CLI</name>
     <properties>
         <cli.test.skip>false</cli.test.skip>
         <cli.it.skip>${cli.test.skip}</cli.it.skip>
         <cli.ut.skip>${cli.test.skip}</cli.ut.skip>
     </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-session</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-server</artifactId>
-            <version>${project.version}</version>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-jdbc</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-cli</groupId>
-            <artifactId>commons-cli</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>me.tongfei</groupId>
-            <artifactId>progressbar</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.jline</groupId>
-            <artifactId>jline</artifactId>
-        </dependency>
-        <!-- Not for importing class, used for windows CLI,
-        refer to https://github.com/apache/iotdb/pull/4458 -->
-        <dependency>
-            <groupId>net.java.dev.jna</groupId>
-            <artifactId>jna</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-antlr</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-server</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-csv</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>node-commons</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
     <build>
         <plugins>
             <!--using `mvn test` to run UT, `mvn verify` to run ITs
@@ -197,6 +125,77 @@
             </plugin>
         </plugins>
     </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-session</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-server</artifactId>
+            <version>${project.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-jdbc</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-cli</groupId>
+            <artifactId>commons-cli</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>me.tongfei</groupId>
+            <artifactId>progressbar</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.jline</groupId>
+            <artifactId>jline</artifactId>
+        </dependency>
+        <!-- Not for importing class, used for windows CLI,
+        refer to https://github.com/apache/iotdb/pull/4458 -->
+        <dependency>
+            <groupId>net.java.dev.jna</groupId>
+            <artifactId>jna</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-antlr</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-server</artifactId>
+            <version>${project.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-csv</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>node-commons</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
     <profiles>
         <profile>
             <id>skipCliTests</id>
diff --git a/iotdb-client/client-cpp/pom.xml b/iotdb-client/client-cpp/pom.xml
index 9f0cf53e804..5c9e45caeca 100644
--- a/iotdb-client/client-cpp/pom.xml
+++ b/iotdb-client/client-cpp/pom.xml
@@ -22,15 +22,14 @@
 <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>
-        <artifactId>iotdb-parent</artifactId>
         <groupId>org.apache.iotdb</groupId>
+        <artifactId>iotdb-client</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>client-cpp</artifactId>
-    <name>Client for cpp</name>
-    <description>C++ client</description>
     <packaging>pom</packaging>
+    <name>IoTDB: Client: Client for CPP</name>
+    <description>C++ client</description>
     <properties>
         <boost.version>1.72.0</boost.version>
         <boost.version.underline-short>1_72</boost.version.underline-short>
diff --git a/iotdb-client/client-py/pom.xml b/iotdb-client/client-py/pom.xml
index 3dac1cb01f8..34f0d754c4d 100644
--- a/iotdb-client/client-py/pom.xml
+++ b/iotdb-client/client-py/pom.xml
@@ -23,25 +23,12 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-client</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>iotdb-python-api</artifactId>
-    <name>python-api</name>
+    <name>IoTDB: Client: Python-API</name>
     <description>Python API of IoTDB.</description>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-thrift</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-thrift-commons</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
     <build>
         <plugins>
             <plugin>
@@ -131,4 +118,16 @@
             </plugin>
         </plugins>
     </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-thrift</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-thrift-commons</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/iotdb-client/compile-tools/pom.xml b/iotdb-client/compile-tools/pom.xml
index 28c911c2472..3c1d8b01abd 100644
--- a/iotdb-client/compile-tools/pom.xml
+++ b/iotdb-client/compile-tools/pom.xml
@@ -21,13 +21,12 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-client</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>client-cpp-tools</artifactId>
     <packaging>pom</packaging>
-    <name>Compile Tools</name>
+    <name>IoTDB: Client: Compile Tools</name>
     <properties>
         <boost.version>1.72.0</boost.version>
         <boost.version.underline-short>1_72</boost.version.underline-short>
diff --git a/iotdb-client/compile-tools/thrift/pom.xml b/iotdb-client/compile-tools/thrift/pom.xml
index 46462e18779..f3b961571fb 100644
--- a/iotdb-client/compile-tools/thrift/pom.xml
+++ b/iotdb-client/compile-tools/thrift/pom.xml
@@ -23,11 +23,9 @@
         <groupId>org.apache.iotdb</groupId>
         <artifactId>client-cpp-tools</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>client-cpp-tools-thrift</artifactId>
-    <packaging>jar</packaging>
-    <name>Tools: Thrift</name>
+    <name>IoTDB: Client: Compile Tools: Thrift</name>
     <description>Local build of the Apache Thrift compiler.</description>
     <properties>
         <thrift.with.cpp>ON</thrift.with.cpp>
diff --git a/iotdb-client/isession/pom.xml b/iotdb-client/isession/pom.xml
index 1d1fee79eb1..ca94af2812c 100644
--- a/iotdb-client/isession/pom.xml
+++ b/iotdb-client/isession/pom.xml
@@ -20,14 +20,14 @@
 
 -->
 <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>
-        <artifactId>iotdb-parent</artifactId>
         <groupId>org.apache.iotdb</groupId>
+        <artifactId>iotdb-client</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
     <artifactId>isession</artifactId>
+    <name>IoTDB: Client: isession</name>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/iotdb-client/jdbc/pom.xml b/iotdb-client/jdbc/pom.xml
index ed7e1f34ff6..9e02bf4c782 100644
--- a/iotdb-client/jdbc/pom.xml
+++ b/iotdb-client/jdbc/pom.xml
@@ -23,12 +23,11 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-client</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>iotdb-jdbc</artifactId>
-    <name>IoTDB Jdbc</name>
+    <name>IoTDB: Client: Jdbc</name>
     <description>A jdbc driver for a time series database, IoTDB, which uses TsFile as its storage format on disk.</description>
     <properties>
         <jdbc.test.skip>false</jdbc.test.skip>
@@ -38,33 +37,6 @@
         <pax-jdbc-common.version>1.4.5</pax-jdbc-common.version>
         <org.osgi.core.version>6.0.0</org.osgi.core.version>
     </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>service-rpc</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
-            <version>${osgi.cmpn.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.ops4j.pax.jdbc</groupId>
-            <artifactId>pax-jdbc-common</artifactId>
-            <version>${pax-jdbc-common.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-            <version>${org.osgi.core.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
     <build>
         <resources>
             <resource>
@@ -182,6 +154,33 @@
             </plugin>
         </plugins>
     </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>service-rpc</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>osgi.cmpn</artifactId>
+            <version>${osgi.cmpn.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.jdbc</groupId>
+            <artifactId>pax-jdbc-common</artifactId>
+            <version>${pax-jdbc-common.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <version>${org.osgi.core.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
     <profiles>
         <profile>
             <id>only-eclipse</id>
diff --git a/iotdb-client/isession/pom.xml b/iotdb-client/pom.xml
similarity index 75%
copy from iotdb-client/isession/pom.xml
copy to iotdb-client/pom.xml
index 1d1fee79eb1..feb2b3e6720 100644
--- a/iotdb-client/isession/pom.xml
+++ b/iotdb-client/pom.xml
@@ -20,19 +20,23 @@
 
 -->
 <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>
-        <artifactId>iotdb-parent</artifactId>
         <groupId>org.apache.iotdb</groupId>
+        <artifactId>iotdb-parent</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>isession</artifactId>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>service-rpc</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
+    <artifactId>iotdb-client</artifactId>
+    <packaging>pom</packaging>
+    <name>IoTDB: Client</name>
+    <modules>
+        <module>cli</module>
+        <module>client-cpp</module>
+        <module>client-py</module>
+        <module>compile-tools</module>
+        <module>isession</module>
+        <module>jdbc</module>
+        <module>service-rpc</module>
+        <module>session</module>
+    </modules>
 </project>
diff --git a/iotdb-client/service-rpc/pom.xml b/iotdb-client/service-rpc/pom.xml
index eca2beeb56c..86dca5ca52c 100644
--- a/iotdb-client/service-rpc/pom.xml
+++ b/iotdb-client/service-rpc/pom.xml
@@ -23,54 +23,17 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-client</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>service-rpc</artifactId>
-    <name>Service-rpc</name>
+    <name>IoTDB: Client: Service-RPC</name>
     <description>RPC framework for client and server.</description>
     <properties>
         <rpc.test.skip>false</rpc.test.skip>
         <rpc.it.skip>${rpc.test.skip}</rpc.it.skip>
         <rpc.ut.skip>${rpc.test.skip}</rpc.ut.skip>
     </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>tsfile</artifactId>
-            <version>${project.version}</version>
-            <!-- we want to reduce the size of JDBC -->
-            <exclusions>
-                <exclusion>
-                    <groupId>*</groupId>
-                    <artifactId>*</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-thrift</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>influxdb-thrift</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.xerial.snappy</groupId>
-            <artifactId>snappy-java</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.openjdk.jol</groupId>
-            <artifactId>jol-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>io.airlift</groupId>
-            <artifactId>slice</artifactId>
-        </dependency>
-    </dependencies>
     <build>
         <plugins>
             <!--
@@ -142,6 +105,42 @@
             </plugin>
         </plugins>
     </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>tsfile</artifactId>
+            <version>${project.version}</version>
+            <!-- we want to reduce the size of JDBC -->
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-thrift</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>influxdb-thrift</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.xerial.snappy</groupId>
+            <artifactId>snappy-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.openjdk.jol</groupId>
+            <artifactId>jol-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.airlift</groupId>
+            <artifactId>slice</artifactId>
+        </dependency>
+    </dependencies>
     <profiles>
         <profile>
             <id>skipTsfileTests</id>
diff --git a/iotdb-client/session/pom.xml b/iotdb-client/session/pom.xml
index 0c305ac2386..a8186f579eb 100644
--- a/iotdb-client/session/pom.xml
+++ b/iotdb-client/session/pom.xml
@@ -20,15 +20,14 @@
 
 -->
 <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>
-        <artifactId>iotdb-parent</artifactId>
         <groupId>org.apache.iotdb</groupId>
+        <artifactId>iotdb-client</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
     <artifactId>iotdb-session</artifactId>
-    <name>IoTDB Session</name>
+    <name>IoTDB: Client: Session</name>
     <properties>
         <session.test.skip>false</session.test.skip>
         <session.it.skip>${session.test.skip}</session.it.skip>
diff --git a/iotdb-connector/flink-iotdb-connector/pom.xml b/iotdb-connector/flink-iotdb-connector/pom.xml
index 0ee96511b85..c329381b1fe 100644
--- a/iotdb-connector/flink-iotdb-connector/pom.xml
+++ b/iotdb-connector/flink-iotdb-connector/pom.xml
@@ -19,12 +19,11 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-connector</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>flink-iotdb-connector</artifactId>
-    <packaging>jar</packaging>
+    <name>IoTDB: Connector: Apache Flink</name>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <compile.version>1.8</compile.version>
diff --git a/iotdb-connector/flink-tsfile-connector/pom.xml b/iotdb-connector/flink-tsfile-connector/pom.xml
index 490e8c3a828..4d15146daba 100644
--- a/iotdb-connector/flink-tsfile-connector/pom.xml
+++ b/iotdb-connector/flink-tsfile-connector/pom.xml
@@ -23,12 +23,11 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-connector</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>flink-tsfile-connector</artifactId>
-    <packaging>jar</packaging>
+    <name>IoTDB: Connector: Apache Flink TSFile</name>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/iotdb-connector/grafana-connector/pom.xml b/iotdb-connector/grafana-connector/pom.xml
index 53d5b9546f1..a0e680002b8 100644
--- a/iotdb-connector/grafana-connector/pom.xml
+++ b/iotdb-connector/grafana-connector/pom.xml
@@ -23,19 +23,12 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-connector</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
-    <!--parent>
-  <groupId>org.springframework.boot</groupId>
-  <artifactId>spring-boot-starter-parent</artifactId>
-  <version>1.5.4.RELEASE</version>
-  <relativePath />
-</parent-->
     <artifactId>iotdb-grafana-connector</artifactId>
     <packaging>war</packaging>
-    <name>IoTDB Grafana connector</name>
+    <name>IoTDB: Connector: Grafana</name>
     <description>Grafana data source connector for IoTDB</description>
     <properties>
         <start-class>org.apache.iotdb.web.grafana.TsfileWebDemoApplication</start-class>
@@ -45,51 +38,6 @@
         <grafana.it.skip>${grafana.test.skip}</grafana.it.skip>
         <grafana.ut.skip>${grafana.test.skip}</grafana.ut.skip>
     </properties>
-    <!-- Import the dependency-management information from the spring-boot poms -->
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-dependencies</artifactId>
-                <version>1.5.22.RELEASE</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-    <dependencies>
-        <dependency>
-            <groupId>com.google.code.gson</groupId>
-            <artifactId>gson</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-jdbc</artifactId>
-            <version>${project.version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>javax.servlet</groupId>
-                    <artifactId>servlet-api</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-            <version>${spring-boot.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-jdbc</artifactId>
-            <version>${spring-boot.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <version>${spring-boot.version}</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
     <build>
         <!-- Most of this is simply imported from the original spring-boot-starter-parent -->
         <pluginManagement>
@@ -227,6 +175,51 @@
             </plugin>
         </plugins>
     </build>
+    <!-- Import the dependency-management information from the spring-boot poms -->
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>1.5.22.RELEASE</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+    <dependencies>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-jdbc</artifactId>
+            <version>${project.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.servlet</groupId>
+                    <artifactId>servlet-api</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <version>${spring-boot.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-jdbc</artifactId>
+            <version>${spring-boot.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <version>${spring-boot.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
     <profiles>
         <profile>
             <id>skipTsfileTests</id>
diff --git a/iotdb-connector/grafana-plugin/pom.xml b/iotdb-connector/grafana-plugin/pom.xml
index d735875a511..a90c1f0f85e 100644
--- a/iotdb-connector/grafana-plugin/pom.xml
+++ b/iotdb-connector/grafana-plugin/pom.xml
@@ -19,14 +19,13 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-connector</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>iotdb-grafana-plugin</artifactId>
-    <name>IoTDB Grafana plugin</name>
-    <description>IoTDB Grafana plugin</description>
     <packaging>pom</packaging>
+    <name>IoTDB: Connector: Grafana (Plugin)</name>
+    <description>IoTDB Grafana plugin</description>
     <profiles>
         <profile>
             <id>compile-grafana-plugin</id>
diff --git a/iotdb-connector/hadoop/pom.xml b/iotdb-connector/hadoop/pom.xml
index f191f976318..8c816f6e761 100644
--- a/iotdb-connector/hadoop/pom.xml
+++ b/iotdb-connector/hadoop/pom.xml
@@ -23,60 +23,16 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-connector</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>hadoop-tsfile</artifactId>
-    <packaging>jar</packaging>
-    <name>IoTDB Hadoop-Tsfile</name>
-    <url>http://maven.apache.org</url>
+    <name>IoTDB: Connector: Apache Hadoop TSFile</name>
     <properties>
         <hadoop.test.skip>false</hadoop.test.skip>
         <hadoop.it.skip>${hadoop.test.skip}</hadoop.it.skip>
         <hadoop.ut.skip>${hadoop.test.skip}</hadoop.ut.skip>
     </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>tsfile</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-client</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>com.google.guava</groupId>
-                    <artifactId>guava</artifactId>
-                </exclusion>
-                <!--commons-configuration uses  commons-lang:commons-lang:2.4
-                while others use commons-lang 2.6-->
-                <exclusion>
-                    <groupId>commons-configuration</groupId>
-                    <artifactId>commons-configuration</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <!-- this is just used by hadoop-common-->
-        <dependency>
-            <groupId>commons-configuration</groupId>
-            <artifactId>commons-configuration</artifactId>
-            <version>1.6</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>commons-lang</groupId>
-                    <artifactId>commons-lang</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <!-- many of hadoop dependencies use guava11, but org.apache.curator from hadoop-common uses
-        guava16 -->
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-    </dependencies>
     <build>
         <plugins>
             <!--
@@ -144,6 +100,47 @@
             </plugin>
         </plugins>
     </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>tsfile</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hadoop</groupId>
+            <artifactId>hadoop-client</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.google.guava</groupId>
+                    <artifactId>guava</artifactId>
+                </exclusion>
+                <!--commons-configuration uses  commons-lang:commons-lang:2.4
+                while others use commons-lang 2.6-->
+                <exclusion>
+                    <groupId>commons-configuration</groupId>
+                    <artifactId>commons-configuration</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <!-- this is just used by hadoop-common-->
+        <dependency>
+            <groupId>commons-configuration</groupId>
+            <artifactId>commons-configuration</artifactId>
+            <version>1.6</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>commons-lang</groupId>
+                    <artifactId>commons-lang</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <!-- many of hadoop dependencies use guava11, but org.apache.curator from hadoop-common uses
+        guava16 -->
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+    </dependencies>
     <profiles>
         <profile>
             <id>skipHadoopTests</id>
diff --git a/iotdb-connector/hive-connector/pom.xml b/iotdb-connector/hive-connector/pom.xml
index 7b0b6332a2f..7449b4029ad 100644
--- a/iotdb-connector/hive-connector/pom.xml
+++ b/iotdb-connector/hive-connector/pom.xml
@@ -23,86 +23,17 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-connector</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>hive-connector</artifactId>
-    <packaging>jar</packaging>
+    <name>IoTDB: Connector: Apache Hive</name>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <compile.version>1.8</compile.version>
         <orc-core.version>1.6.0</orc-core.version>
         <hive-storage-api.version>2.6.1</hive-storage-api.version>
     </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>hadoop-tsfile</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.hive</groupId>
-            <artifactId>hive-serde</artifactId>
-            <exclusions>
-                <!-- hive-serde 2.8.4 uses orc-core 1.3.2,
-                which is under incompatible license. So, exclude it.-->
-                <exclusion>
-                    <groupId>org.apache.orc</groupId>
-                    <artifactId>orc-core</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.hive</groupId>
-                    <artifactId>hive-storage-api</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.apache.zookeeper</groupId>
-                    <artifactId>zookeeper</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.google.guava</groupId>
-                    <artifactId>guava</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <!-- many of hadoop dependencies use guava11, but org.apache.curator from hadoop-common uses
-        guava16 -->
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-        <!-- force upgrade the dependency of hive-serde-->
-        <dependency>
-            <groupId>org.apache.orc</groupId>
-            <artifactId>orc-core</artifactId>
-            <version>${orc-core.version}</version>
-        </dependency>
-        <!-- orc-core 1.6 uses hive-storage-api 2.6.0, while hive-serde 2.8.4 uses 2.4.0, so we
-        explicitly claim it.-->
-        <dependency>
-            <groupId>org.apache.hive</groupId>
-            <artifactId>hive-storage-api</artifactId>
-            <version>${hive-storage-api.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.hive</groupId>
-            <artifactId>hive-exec</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.antlr</groupId>
-                    <artifactId>antlr-runtime</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.google.guava</groupId>
-                    <artifactId>guava</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>commons-lang</groupId>
-                    <artifactId>commons-lang</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-    </dependencies>
     <dependencyManagement>
         <dependencies>
             <dependency>
@@ -172,6 +103,74 @@
             </dependency>
         </dependencies>
     </dependencyManagement>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>hadoop-tsfile</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hive</groupId>
+            <artifactId>hive-serde</artifactId>
+            <exclusions>
+                <!-- hive-serde 2.8.4 uses orc-core 1.3.2,
+                which is under incompatible license. So, exclude it.-->
+                <exclusion>
+                    <groupId>org.apache.orc</groupId>
+                    <artifactId>orc-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.hive</groupId>
+                    <artifactId>hive-storage-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.zookeeper</groupId>
+                    <artifactId>zookeeper</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.google.guava</groupId>
+                    <artifactId>guava</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <!-- many of hadoop dependencies use guava11, but org.apache.curator from hadoop-common uses
+        guava16 -->
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <!-- force upgrade the dependency of hive-serde-->
+        <dependency>
+            <groupId>org.apache.orc</groupId>
+            <artifactId>orc-core</artifactId>
+            <version>${orc-core.version}</version>
+        </dependency>
+        <!-- orc-core 1.6 uses hive-storage-api 2.6.0, while hive-serde 2.8.4 uses 2.4.0, so we
+        explicitly claim it.-->
+        <dependency>
+            <groupId>org.apache.hive</groupId>
+            <artifactId>hive-storage-api</artifactId>
+            <version>${hive-storage-api.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hive</groupId>
+            <artifactId>hive-exec</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.antlr</groupId>
+                    <artifactId>antlr-runtime</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.google.guava</groupId>
+                    <artifactId>guava</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>commons-lang</groupId>
+                    <artifactId>commons-lang</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
     <profiles>
         <profile>
             <id>get-jar-with-dependencies</id>
diff --git a/iotdb-client/isession/pom.xml b/iotdb-connector/pom.xml
similarity index 71%
copy from iotdb-client/isession/pom.xml
copy to iotdb-connector/pom.xml
index 1d1fee79eb1..ba1fa0dc02f 100644
--- a/iotdb-client/isession/pom.xml
+++ b/iotdb-connector/pom.xml
@@ -20,19 +20,24 @@
 
 -->
 <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>
-        <artifactId>iotdb-parent</artifactId>
         <groupId>org.apache.iotdb</groupId>
+        <artifactId>iotdb-parent</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>isession</artifactId>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>service-rpc</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
+    <artifactId>iotdb-connector</artifactId>
+    <packaging>pom</packaging>
+    <name>IoTDB: Connector</name>
+    <modules>
+        <module>flink-iotdb-connector</module>
+        <module>flink-tsfile-connector</module>
+        <module>grafana-connector</module>
+        <module>grafana-plugin</module>
+        <module>hadoop</module>
+        <module>hive-connector</module>
+        <module>spark-iotdb-connector</module>
+        <module>spark-tsfile</module>
+        <module>zeppelin-interpreter</module>
+    </modules>
 </project>
diff --git a/iotdb-connector/spark-iotdb-connector/pom.xml b/iotdb-connector/spark-iotdb-connector/pom.xml
index 6c582db8490..efe6df7e10e 100644
--- a/iotdb-connector/spark-iotdb-connector/pom.xml
+++ b/iotdb-connector/spark-iotdb-connector/pom.xml
@@ -23,17 +23,82 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
-        <version>1.2.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
+        <artifactId>iotdb-connector</artifactId>
+        <version>1.3.0-SNAPSHOT</version>
     </parent>
     <artifactId>spark-iotdb-connector</artifactId>
+    <!-- NOTE: This module actually only contains the sources and the common settings
+               These sources are compiled twice for different scala version in sub-
+               modules.
+    -->
     <packaging>pom</packaging>
+    <name>IoTDB: Connector: Apache Spark</name>
     <properties>
         <maven.compiler.source>11</maven.compiler.source>
         <maven.compiler.target>11</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
+    <modules>
+        <module>scala_2.11</module>
+        <module>scala_2.12</module>
+    </modules>
+    <build>
+        <!--
+            Defining the settings in pluginManagement as we don't actually want to run the plugins in this module
+            but want to have the plugins defined in the child modules to inherit these settings.
+        -->
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.scala-tools</groupId>
+                    <artifactId>maven-scala-plugin</artifactId>
+                    <version>2.15.2</version>
+                    <executions>
+                        <execution>
+                            <goals>
+                                <goal>add-source</goal>
+                                <goal>compile</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                    <configuration>
+                        <scalaVersion>${scala.version}</scalaVersion>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-jar-plugin</artifactId>
+                    <version>3.2.0</version>
+                    <configuration>
+                        <finalName>spark-iotdb-connector_${scala.library.version}-${project.version}</finalName>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-shade-plugin</artifactId>
+                    <version>3.4.1</version>
+                    <executions>
+                        <execution>
+                            <goals>
+                                <goal>shade</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                    <configuration>
+                        <relocations>
+                            <relocation>
+                                <pattern>org.apache.thrift</pattern>
+                                <shadedPattern>shade.org.apache.thrift</shadedPattern>
+                            </relocation>
+                        </relocations>
+                        <shadedArtifactAttached>true</shadedArtifactAttached>
+                        <shadedClassifierName>jar-with-dependencies</shadedClassifierName>
+                        <createDependencyReducedPom>false</createDependencyReducedPom>
+                    </configuration>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/iotdb-connector/spark-iotdb-connector/scala_2.11/pom.xml b/iotdb-connector/spark-iotdb-connector/scala_2.11/pom.xml
index 7d4b373eeda..e50b4866658 100644
--- a/iotdb-connector/spark-iotdb-connector/scala_2.11/pom.xml
+++ b/iotdb-connector/spark-iotdb-connector/scala_2.11/pom.xml
@@ -23,92 +23,26 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>spark-iotdb-connector</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../../pom.xml</relativePath>
     </parent>
     <artifactId>spark-iotdb-connector_2.11</artifactId>
+    <name>IoTDB: Connector: Apache Spark (Scala 2.11)</name>
     <properties>
-        <maven.compiler.source>11</maven.compiler.source>
-        <maven.compiler.target>11</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <scala.library.version>2.11</scala.library.version>
         <scala.version>2.11.12</scala.version>
         <spark.version>2.4.8</spark.version>
     </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-jdbc</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-session</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.spark</groupId>
-            <artifactId>spark-core_${scala.library.version}</artifactId>
-            <version>${spark.version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.spark</groupId>
-            <artifactId>spark-sql_${scala.library.version}</artifactId>
-            <version>${spark.version}</version>
-            <scope>provided</scope>
-        </dependency>
-    </dependencies>
     <build>
         <sourceDirectory>../src/main/scala</sourceDirectory>
         <plugins>
             <plugin>
                 <groupId>org.scala-tools</groupId>
                 <artifactId>maven-scala-plugin</artifactId>
-                <version>2.15.2</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>add-source</goal>
-                            <goal>compile</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <scalaVersion>${scala.version}</scalaVersion>
-                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
-                <version>3.2.0</version>
-                <configuration>
-                    <finalName>spark-iotdb-connector_${scala.library.version}-${project.version}</finalName>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-shade-plugin</artifactId>
-                <version>3.4.1</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>shade</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <relocations>
-                        <relocation>
-                            <pattern>org.apache.thrift</pattern>
-                            <shadedPattern>shade.org.apache.thrift</shadedPattern>
-                        </relocation>
-                    </relocations>
-                    <shadedArtifactAttached>true</shadedArtifactAttached>
-                    <shadedClassifierName>jar-with-dependencies</shadedClassifierName>
-                    <createDependencyReducedPom>false</createDependencyReducedPom>
-                </configuration>
             </plugin>
         </plugins>
     </build>
diff --git a/iotdb-connector/spark-iotdb-connector/scala_2.12/pom.xml b/iotdb-connector/spark-iotdb-connector/scala_2.12/pom.xml
index 853e66deb87..88fba7b436f 100644
--- a/iotdb-connector/spark-iotdb-connector/scala_2.12/pom.xml
+++ b/iotdb-connector/spark-iotdb-connector/scala_2.12/pom.xml
@@ -23,95 +23,21 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>spark-iotdb-connector</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../../pom.xml</relativePath>
     </parent>
     <artifactId>spark-iotdb-connector_2.12</artifactId>
-    <properties>
-        <maven.compiler.source>11</maven.compiler.source>
-        <maven.compiler.target>11</maven.compiler.target>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-jdbc</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-session</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.spark</groupId>
-            <artifactId>spark-core_${scala.library.version}</artifactId>
-            <version>${spark.version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.spark</groupId>
-            <artifactId>spark-sql_${scala.library.version}</artifactId>
-            <version>${spark.version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.scala-lang</groupId>
-            <artifactId>scala-library</artifactId>
-            <version>${scala.version}</version>
-            <scope>provided</scope>
-        </dependency>
-    </dependencies>
+    <name>IoTDB: Connector: Apache Spark (Scala 2.12)</name>
     <build>
         <sourceDirectory>../src/main/scala</sourceDirectory>
         <plugins>
             <plugin>
                 <groupId>org.scala-tools</groupId>
                 <artifactId>maven-scala-plugin</artifactId>
-                <version>2.15.2</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>add-source</goal>
-                            <goal>compile</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <scalaVersion>${scala.version}</scalaVersion>
-                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
-                <version>3.2.0</version>
-                <configuration>
-                    <finalName>spark-iotdb-connector_${scala.library.version}-${project.version}</finalName>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-shade-plugin</artifactId>
-                <version>3.4.1</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>shade</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <relocations>
-                        <relocation>
-                            <pattern>org.apache.thrift</pattern>
-                            <shadedPattern>shade.org.apache.thrift</shadedPattern>
-                        </relocation>
-                    </relocations>
-                    <shadedArtifactAttached>true</shadedArtifactAttached>
-                    <shadedClassifierName>jar-with-dependencies</shadedClassifierName>
-                    <createDependencyReducedPom>false</createDependencyReducedPom>
-                </configuration>
             </plugin>
         </plugins>
     </build>
diff --git a/iotdb-connector/spark-tsfile/pom.xml b/iotdb-connector/spark-tsfile/pom.xml
index 0407a0dfa32..13615675d50 100644
--- a/iotdb-connector/spark-tsfile/pom.xml
+++ b/iotdb-connector/spark-tsfile/pom.xml
@@ -23,13 +23,31 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-connector</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>spark-tsfile</artifactId>
-    <packaging>jar</packaging>
-    <name>IoTDB Spark-TsFile</name>
+    <name>IoTDB: Connector: Apache Spark TSFile</name>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.scala-tools</groupId>
+                <artifactId>maven-scala-plugin</artifactId>
+                <version>2.15.2</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>compile</goal>
+                            <goal>testCompile</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <scalaVersion>2.11.12</scalaVersion>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
@@ -70,24 +88,4 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.scala-tools</groupId>
-                <artifactId>maven-scala-plugin</artifactId>
-                <version>2.15.2</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>compile</goal>
-                            <goal>testCompile</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <scalaVersion>2.11.12</scalaVersion>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
 </project>
diff --git a/iotdb-connector/zeppelin-interpreter/pom.xml b/iotdb-connector/zeppelin-interpreter/pom.xml
index 8b8076be5d5..a9653b57a6c 100644
--- a/iotdb-connector/zeppelin-interpreter/pom.xml
+++ b/iotdb-connector/zeppelin-interpreter/pom.xml
@@ -23,14 +23,24 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-connector</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>zeppelin-iotdb</artifactId>
-    <packaging>jar</packaging>
-    <name>Zeppelin: Apache IoTDB interpreter</name>
+    <name>IoTDB: Connector: Apache Zeppelin</name>
     <description>Zeppelin IoTDB support</description>
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
     <dependencies>
         <dependency>
             <groupId>org.apache.zeppelin</groupId>
@@ -60,18 +70,6 @@
             <version>${org.slf4j.version}</version>
         </dependency>
     </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.8.1</version>
-                <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
     <profiles>
         <profile>
             <id>get-jar-with-dependencies</id>
diff --git a/iotdb-core/antlr/pom.xml b/iotdb-core/antlr/pom.xml
index af03dba9456..b497fd8e0f2 100644
--- a/iotdb-core/antlr/pom.xml
+++ b/iotdb-core/antlr/pom.xml
@@ -23,19 +23,12 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-core</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>iotdb-antlr</artifactId>
-    <name>sql-antlr</name>
+    <name>IoTDB: Core: Antlr-Parser</name>
     <description>Antlr parser for IoTDB.</description>
-    <dependencies>
-        <dependency>
-            <groupId>org.antlr</groupId>
-            <artifactId>antlr4-runtime</artifactId>
-        </dependency>
-    </dependencies>
     <build>
         <plugins>
             <plugin>
@@ -93,4 +86,10 @@
             </plugin>
         </plugins>
     </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.antlr</groupId>
+            <artifactId>antlr4-runtime</artifactId>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/iotdb-core/confignode/pom.xml b/iotdb-core/confignode/pom.xml
index 08272bdd21e..5d313a168b3 100644
--- a/iotdb-core/confignode/pom.xml
+++ b/iotdb-core/confignode/pom.xml
@@ -23,53 +23,16 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-core</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>iotdb-confignode</artifactId>
-    <name>IoTDB ConfigNode</name>
+    <name>IoTDB: Core: ConfigNode</name>
     <properties>
         <confignode.test.skip>false</confignode.test.skip>
         <confignode.it.skip>${confignode.test.skip}</confignode.it.skip>
         <confignode.ut.skip>${confignode.test.skip}</confignode.ut.skip>
     </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>service-rpc</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-consensus</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-server</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>pipe-api</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-api-mockito2</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
     <build>
         <plugins>
             <plugin>
@@ -124,6 +87,42 @@
             </plugin>
         </plugins>
     </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>service-rpc</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-consensus</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-server</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>pipe-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-api-mockito2</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
     <profiles>
         <profile>
             <id>skipConfigNodeTests</id>
diff --git a/iotdb-core/consensus/pom.xml b/iotdb-core/consensus/pom.xml
index 1c1b23adbd0..6b59f87f600 100644
--- a/iotdb-core/consensus/pom.xml
+++ b/iotdb-core/consensus/pom.xml
@@ -20,15 +20,14 @@
 
 -->
 <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>
-        <artifactId>iotdb-parent</artifactId>
         <groupId>org.apache.iotdb</groupId>
+        <artifactId>iotdb-core</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
     <artifactId>iotdb-consensus</artifactId>
-    <name>IoTDB Consensus</name>
+    <name>IoTDB: Core: Consensus</name>
     <properties>
         <maven.compiler.source>8</maven.compiler.source>
         <maven.compiler.target>8</maven.compiler.target>
@@ -37,6 +36,33 @@
         <consensus.it.skip>${consensus.test.skip}</consensus.it.skip>
         <consensus.ut.skip>${consensus.test.skip}</consensus.ut.skip>
     </properties>
+    <build>
+        <plugins>
+            <!-- generate test codes into test-jar-->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>test-jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <!--using `mvn test` to run UT, `mvn verify` to run ITs
+                        Reference: https://antoniogoncalves.org/2012/12/13/lets-turn-integration-tests-with-maven-to-a-first-class-citizen/-->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skipTests>${consensus.ut.skip}</skipTests>
+                    <reuseForks>false</reuseForks>
+                    <runOrder>random</runOrder>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
     <dependencies>
         <!-- https://mvnrepository.com/artifact/org.apache.ratis/ratis-server -->
         <dependency>
@@ -66,33 +92,6 @@
             <version>${project.version}</version>
         </dependency>
     </dependencies>
-    <build>
-        <plugins>
-            <!-- generate test codes into test-jar-->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>test-jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <!--using `mvn test` to run UT, `mvn verify` to run ITs
-                        Reference: https://antoniogoncalves.org/2012/12/13/lets-turn-integration-tests-with-maven-to-a-first-class-citizen/-->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <skipTests>${consensus.ut.skip}</skipTests>
-                    <reuseForks>false</reuseForks>
-                    <runOrder>random</runOrder>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
     <profiles>
         <profile>
             <id>skipConsensusTests</id>
diff --git a/iotdb-core/datanode/pom.xml b/iotdb-core/datanode/pom.xml
index 88f80a40fb4..b46a8ee520a 100644
--- a/iotdb-core/datanode/pom.xml
+++ b/iotdb-core/datanode/pom.xml
@@ -23,12 +23,11 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-core</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>iotdb-server</artifactId>
-    <name>IoTDB Server</name>
+    <name>IoTDB: Core: Data-Node (Server)</name>
     <properties>
         <iotdb.test.skip>false</iotdb.test.skip>
         <iotdb.it.skip>${iotdb.test.skip}</iotdb.it.skip>
@@ -37,6 +36,144 @@
         <oauth2-oidc-sdk.version>8.3</oauth2-oidc-sdk.version>
         <tomcat-embed-core.version>10.1.0-M1</tomcat-embed-core.version>
     </properties>
+    <build>
+        <plugins>
+            <!--using `mvn test` to run UT, `mvn verify` to run ITs
+                        Reference: https://antoniogoncalves.org/2012/12/13/lets-turn-integration-tests-with-maven-to-a-first-class-citizen/-->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skipTests>${iotdb.ut.skip}</skipTests>
+                    <systemProperties>
+                        <IOTDB_CONF>src/test/resources</IOTDB_CONF>
+                    </systemProperties>
+                    <reuseForks>false</reuseForks>
+                    <runOrder>random</runOrder>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>run-integration-tests</id>
+                        <phase>integration-test</phase>
+                        <goals>
+                            <goal>integration-test</goal>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <skipTests>${iotdb.test.skip}</skipTests>
+                    <skipITs>${iotdb.it.skip}</skipITs>
+                    <reuseForks>false</reuseForks>
+                    <runOrder>random</runOrder>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <version>${maven.assembly.version}</version>
+                <executions>
+                    <!-- Package binaries-->
+                    <execution>
+                        <id>server-assembly</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>src/assembly/server.xml</descriptor>
+                            </descriptors>
+                            <appendAssemblyId>false</appendAssemblyId>
+                            <archive>
+                                <manifest>
+                                    <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+                                    <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+                                </manifest>
+                            </archive>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- generate test codes into test-jar-->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>test-jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <!-- copy all templates/data in the same location to compile them at once -->
+                        <id>copy-fmpp-resources</id>
+                        <phase>initialize</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/codegen</outputDirectory>
+                            <resources>
+                                <resource>
+                                    <directory>src/main/codegen</directory>
+                                    <filtering>false</filtering>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <!-- generate sources from fmpp -->
+                <groupId>org.apache.drill.tools</groupId>
+                <artifactId>drill-fmpp-maven-plugin</artifactId>
+                <version>${drill.freemarker.maven.plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>generate-fmpp</id>
+                        <phase>${codegen.phase}</phase>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                        <configuration>
+                            <config>${project.build.directory}/codegen/config.fmpp</config>
+                            <output>${project.build.directory}/generated-sources/freemarker</output>
+                            <templates>${project.build.directory}/codegen/templates</templates>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>3.2.0</version>
+                <executions>
+                    <execution>
+                        <id>add-source</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                <source>${project.build.directory}/generated-sources/freemarker</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
@@ -213,144 +350,6 @@
             <artifactId>disruptor</artifactId>
         </dependency>
     </dependencies>
-    <build>
-        <plugins>
-            <!--using `mvn test` to run UT, `mvn verify` to run ITs
-                        Reference: https://antoniogoncalves.org/2012/12/13/lets-turn-integration-tests-with-maven-to-a-first-class-citizen/-->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <skipTests>${iotdb.ut.skip}</skipTests>
-                    <systemProperties>
-                        <IOTDB_CONF>src/test/resources</IOTDB_CONF>
-                    </systemProperties>
-                    <reuseForks>false</reuseForks>
-                    <runOrder>random</runOrder>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-failsafe-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>run-integration-tests</id>
-                        <phase>integration-test</phase>
-                        <goals>
-                            <goal>integration-test</goal>
-                            <goal>verify</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <skipTests>${iotdb.test.skip}</skipTests>
-                    <skipITs>${iotdb.it.skip}</skipITs>
-                    <reuseForks>false</reuseForks>
-                    <runOrder>random</runOrder>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-                <version>${maven.assembly.version}</version>
-                <executions>
-                    <!-- Package binaries-->
-                    <execution>
-                        <id>server-assembly</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                        <configuration>
-                            <descriptors>
-                                <descriptor>src/assembly/server.xml</descriptor>
-                            </descriptors>
-                            <appendAssemblyId>false</appendAssemblyId>
-                            <archive>
-                                <manifest>
-                                    <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-                                    <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
-                                </manifest>
-                            </archive>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <!-- generate test codes into test-jar-->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>test-jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <artifactId>maven-resources-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <!-- copy all templates/data in the same location to compile them at once -->
-                        <id>copy-fmpp-resources</id>
-                        <phase>initialize</phase>
-                        <goals>
-                            <goal>copy-resources</goal>
-                        </goals>
-                        <configuration>
-                            <outputDirectory>${project.build.directory}/codegen</outputDirectory>
-                            <resources>
-                                <resource>
-                                    <directory>src/main/codegen</directory>
-                                    <filtering>false</filtering>
-                                </resource>
-                            </resources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <!-- generate sources from fmpp -->
-                <groupId>org.apache.drill.tools</groupId>
-                <artifactId>drill-fmpp-maven-plugin</artifactId>
-                <version>${drill.freemarker.maven.plugin.version}</version>
-                <executions>
-                    <execution>
-                        <id>generate-fmpp</id>
-                        <phase>${codegen.phase}</phase>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <configuration>
-                            <config>${project.build.directory}/codegen/config.fmpp</config>
-                            <output>${project.build.directory}/generated-sources/freemarker</output>
-                            <templates>${project.build.directory}/codegen/templates</templates>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>3.2.0</version>
-                <executions>
-                    <execution>
-                        <id>add-source</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>${project.build.directory}/generated-sources/freemarker</source>
-                            </sources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
     <profiles>
         <profile>
             <id>skipIoTDBTests</id>
diff --git a/iotdb-core/metrics/dropwizard-metrics/pom.xml b/iotdb-core/metrics/dropwizard-metrics/pom.xml
index 03c5f39d6b6..cea13c62a04 100644
--- a/iotdb-core/metrics/dropwizard-metrics/pom.xml
+++ b/iotdb-core/metrics/dropwizard-metrics/pom.xml
@@ -20,13 +20,18 @@
 
 -->
 <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>
-        <artifactId>iotdb-metrics</artifactId>
         <groupId>org.apache.iotdb</groupId>
+        <artifactId>iotdb-metrics</artifactId>
         <version>1.3.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
     <artifactId>dropwizard-metrics</artifactId>
+    <name>IoTDB: Core: Metrics: Dropwizard</name>
+    <properties>
+        <jersey-core.version>1.9</jersey-core.version>
+        <reactor-netty-http.version>1.0.24</reactor-netty-http.version>
+    </properties>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
@@ -44,8 +49,4 @@
             <version>${dropwizard.metrics.version}</version>
         </dependency>
     </dependencies>
-    <properties>
-        <jersey-core.version>1.9</jersey-core.version>
-        <reactor-netty-http.version>1.0.24</reactor-netty-http.version>
-    </properties>
 </project>
diff --git a/iotdb-core/metrics/interface/pom.xml b/iotdb-core/metrics/interface/pom.xml
index 55ae005f1d2..8118c452ca9 100644
--- a/iotdb-core/metrics/interface/pom.xml
+++ b/iotdb-core/metrics/interface/pom.xml
@@ -21,32 +21,18 @@
 -->
 <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/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
-    <properties>
-        <snakeyaml.version>1.31</snakeyaml.version>
-        <reactor-netty-http.version>1.0.24</reactor-netty-http.version>
-    </properties>
     <parent>
         <groupId>org.apache.iotdb</groupId>
         <artifactId>iotdb-metrics</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>metrics-interface</artifactId>
-    <name>metric interface</name>
+    <name>IoTDB: Core: Metrics: Metrics API</name>
     <description>Metrics interface for IoTDB</description>
-    <url>https://github.com/thulab/iotdb/tree/master/tsfile</url>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-session</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>io.projectreactor.netty</groupId>
-            <artifactId>reactor-netty-http</artifactId>
-            <version>${reactor-netty-http.version}</version>
-        </dependency>
-    </dependencies>
+    <properties>
+        <snakeyaml.version>1.31</snakeyaml.version>
+        <reactor-netty-http.version>1.0.24</reactor-netty-http.version>
+    </properties>
     <build>
         <plugins>
             <plugin>
@@ -78,4 +64,16 @@
             </plugin>
         </plugins>
     </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-session</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.projectreactor.netty</groupId>
+            <artifactId>reactor-netty-http</artifactId>
+            <version>${reactor-netty-http.version}</version>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/iotdb-core/metrics/micrometer-metrics/pom.xml b/iotdb-core/metrics/micrometer-metrics/pom.xml
index 66b022220d3..f8fd5198285 100644
--- a/iotdb-core/metrics/micrometer-metrics/pom.xml
+++ b/iotdb-core/metrics/micrometer-metrics/pom.xml
@@ -20,13 +20,14 @@
 
 -->
 <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>
-        <artifactId>iotdb-metrics</artifactId>
         <groupId>org.apache.iotdb</groupId>
+        <artifactId>iotdb-metrics</artifactId>
         <version>1.3.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
     <artifactId>micrometer-metrics</artifactId>
+    <name>IoTDB: Core: Metrics: Micrometer</name>
     <dependencies>
         <dependency>
             <groupId>org.apache.iotdb</groupId>
diff --git a/iotdb-core/metrics/pom.xml b/iotdb-core/metrics/pom.xml
index c6fa174d68b..6fe97b4f0a2 100644
--- a/iotdb-core/metrics/pom.xml
+++ b/iotdb-core/metrics/pom.xml
@@ -23,15 +23,13 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-core</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>iotdb-metrics</artifactId>
     <packaging>pom</packaging>
-    <name>metric module</name>
-    <description>Metrics interface for IoTDB</description>
-    <url>https://github.com/thulab/iotdb/tree/master/tsfile</url>
+    <name>IoTDB: Core: Metrics</name>
+    <description>Metrics interfaces for IoTDB</description>
     <properties>
         <metrics.test.skip>false</metrics.test.skip>
     </properties>
diff --git a/iotdb-core/mlnode/pom.xml b/iotdb-core/mlnode/pom.xml
index b11a2bff79c..c0d56e403ed 100644
--- a/iotdb-core/mlnode/pom.xml
+++ b/iotdb-core/mlnode/pom.xml
@@ -23,34 +23,11 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-core</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>iotdb-mlnode</artifactId>
-    <name>IoTDB MlNode</name>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-thrift-commons</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-thrift</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-thrift-confignode</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-thrift-mlnode</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
+    <name>IoTDB: Core: MlNode</name>
     <build>
         <plugins>
             <plugin>
@@ -157,4 +134,26 @@
             </plugin>
         </plugins>
     </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-thrift-commons</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-thrift</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-thrift-confignode</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-thrift-mlnode</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/iotdb-core/node-commons/pom.xml b/iotdb-core/node-commons/pom.xml
index ee35a88dc8d..542fe10a26c 100644
--- a/iotdb-core/node-commons/pom.xml
+++ b/iotdb-core/node-commons/pom.xml
@@ -23,12 +23,11 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-core</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>node-commons</artifactId>
-    <name>Node Commons</name>
+    <name>IoTDB: Core: Node Commons</name>
     <description>Common modules of the server and config node</description>
     <properties>
         <commons.test.skip>false</commons.test.skip>
@@ -36,6 +35,109 @@
         <commons.ut.skip>${commons.test.skip}</commons.ut.skip>
         <cglib.version>3.1</cglib.version>
     </properties>
+    <build>
+        <plugins>
+            <!--
+        Generate an OSGI compatible MANIFEST file.
+      -->
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>${felix.version}</version>
+                <executions>
+                    <execution>
+                        <id>bundle-manifest</id>
+                        <phase>process-classes</phase>
+                        <goals>
+                            <goal>manifest</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <exportScr>true</exportScr>
+                    <instructions>
+                        <_include>-bnd.bnd</_include>
+                        <_removeheaders>Bnd-LastModified,Built-By</_removeheaders>
+                        <Embed-Dependency>dependencies</Embed-Dependency>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>pl.project13.maven</groupId>
+                <artifactId>git-commit-id-plugin</artifactId>
+                <version>4.9.10</version>
+                <executions>
+                    <execution>
+                        <id>get-the-git-infos</id>
+                        <goals>
+                            <goal>revision</goal>
+                        </goals>
+                        <phase>initialize</phase>
+                    </execution>
+                </executions>
+                <configuration>
+                    <generateGitPropertiesFile>true</generateGitPropertiesFile>
+                    <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
+                    <includeOnlyProperties>
+                        <includeOnlyProperty>^git.commit.id.abbrev$</includeOnlyProperty>
+                        <includeOnlyProperty>^git.dirty$</includeOnlyProperty>
+                    </includeOnlyProperties>
+                    <commitIdGenerationMode>full</commitIdGenerationMode>
+                    <failOnNoGitDirectory>false</failOnNoGitDirectory>
+                    <offline>true</offline>
+                    <gitDescribe>
+                        <dirty>-dev</dirty>
+                    </gitDescribe>
+                </configuration>
+            </plugin>
+            <!--
+              Use the MANIFEST file generated by the maven-bundle-plugin.
+            -->
+            <plugin>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+                        <manifest>
+                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
+                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+                        </manifest>
+                    </archive>
+                </configuration>
+            </plugin>
+            <!--using `mvn test` to run UT, `mvn verify` to run ITs
+            Reference: https://antoniogoncalves.org/2012/12/13/lets-turn-integration-tests-with-maven-to-a-first-class-citizen/-->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skipTests>${commons.ut.skip}</skipTests>
+                    <reuseForks>false</reuseForks>
+                    <runOrder>random</runOrder>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>run-integration-tests</id>
+                        <phase>integration-test</phase>
+                        <goals>
+                            <goal>integration-test</goal>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <skipTests>${commons.test.skip}</skipTests>
+                    <skipITs>${commons.it.skip}</skipITs>
+                    <reuseForks>false</reuseForks>
+                    <runOrder>random</runOrder>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
     <dependencies>
         <dependency>
             <groupId>cglib</groupId>
@@ -163,109 +265,6 @@
             <artifactId>caffeine</artifactId>
         </dependency>
     </dependencies>
-    <build>
-        <plugins>
-            <!--
-        Generate an OSGI compatible MANIFEST file.
-      -->
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <version>${felix.version}</version>
-                <executions>
-                    <execution>
-                        <id>bundle-manifest</id>
-                        <phase>process-classes</phase>
-                        <goals>
-                            <goal>manifest</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <exportScr>true</exportScr>
-                    <instructions>
-                        <_include>-bnd.bnd</_include>
-                        <_removeheaders>Bnd-LastModified,Built-By</_removeheaders>
-                        <Embed-Dependency>dependencies</Embed-Dependency>
-                    </instructions>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>pl.project13.maven</groupId>
-                <artifactId>git-commit-id-plugin</artifactId>
-                <version>4.9.10</version>
-                <executions>
-                    <execution>
-                        <id>get-the-git-infos</id>
-                        <goals>
-                            <goal>revision</goal>
-                        </goals>
-                        <phase>initialize</phase>
-                    </execution>
-                </executions>
-                <configuration>
-                    <generateGitPropertiesFile>true</generateGitPropertiesFile>
-                    <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
-                    <includeOnlyProperties>
-                        <includeOnlyProperty>^git.commit.id.abbrev$</includeOnlyProperty>
-                        <includeOnlyProperty>^git.dirty$</includeOnlyProperty>
-                    </includeOnlyProperties>
-                    <commitIdGenerationMode>full</commitIdGenerationMode>
-                    <failOnNoGitDirectory>false</failOnNoGitDirectory>
-                    <offline>true</offline>
-                    <gitDescribe>
-                        <dirty>-dev</dirty>
-                    </gitDescribe>
-                </configuration>
-            </plugin>
-            <!--
-              Use the MANIFEST file generated by the maven-bundle-plugin.
-            -->
-            <plugin>
-                <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
-                        <manifest>
-                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
-                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-                        </manifest>
-                    </archive>
-                </configuration>
-            </plugin>
-            <!--using `mvn test` to run UT, `mvn verify` to run ITs
-            Reference: https://antoniogoncalves.org/2012/12/13/lets-turn-integration-tests-with-maven-to-a-first-class-citizen/-->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <skipTests>${commons.ut.skip}</skipTests>
-                    <reuseForks>false</reuseForks>
-                    <runOrder>random</runOrder>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-failsafe-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>run-integration-tests</id>
-                        <phase>integration-test</phase>
-                        <goals>
-                            <goal>integration-test</goal>
-                            <goal>verify</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <skipTests>${commons.test.skip}</skipTests>
-                    <skipITs>${commons.it.skip}</skipITs>
-                    <reuseForks>false</reuseForks>
-                    <runOrder>random</runOrder>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
     <profiles>
         <profile>
             <id>skipCommonsTests</id>
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/executable/ExecutableManager.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/executable/ExecutableManager.java
index 0f195086230..b0615455e6e 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/executable/ExecutableManager.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/executable/ExecutableManager.java
@@ -19,6 +19,7 @@
 
 package org.apache.iotdb.commons.executable;
 
+import org.apache.iotdb.commons.file.SystemFileFactory;
 import org.apache.iotdb.commons.trigger.exception.TriggerJarTooLargeException;
 import org.apache.iotdb.tsfile.fileSystem.FSFactoryProducer;
 
@@ -227,6 +228,8 @@ public class ExecutableManager {
     try {
       Path path = Paths.get(destination);
       Files.deleteIfExists(path);
+      // Ensure the target directory exists.
+      SystemFileFactory.INSTANCE.makeDirIfNecessary(destination);
       Files.createFile(path);
       try (FileOutputStream outputStream = new FileOutputStream(destination)) {
         outputStream.getChannel().write(byteBuffer);
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/file/SystemFileFactory.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/file/SystemFileFactory.java
index 54f2e139b5a..374f22f19aa 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/file/SystemFileFactory.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/file/SystemFileFactory.java
@@ -33,11 +33,11 @@ public enum SystemFileFactory {
 
   private static FSType fsType =
       CommonDescriptor.getInstance().getConfig().getSystemFileStorageFs();
-  private static final String UNSUPPORT_FILE_SYSTEM = "Unsupported file system: ";
+  private static final String UNSUPPORTED_FILE_SYSTEM = "Unsupported file system: ";
 
   public File getFile(String pathname) {
     if (fsType.equals(FSType.HDFS)) {
-      throw new UnsupportedOperationException(UNSUPPORT_FILE_SYSTEM + fsType.name());
+      throw new UnsupportedOperationException(UNSUPPORTED_FILE_SYSTEM + fsType.name());
       // return new HDFSFile(pathname);
     } else {
       return new File(pathname);
@@ -46,7 +46,7 @@ public enum SystemFileFactory {
 
   public File getFile(String parent, String child) {
     if (fsType.equals(FSType.HDFS)) {
-      throw new UnsupportedOperationException(UNSUPPORT_FILE_SYSTEM + fsType.name());
+      throw new UnsupportedOperationException(UNSUPPORTED_FILE_SYSTEM + fsType.name());
       // return new HDFSFile(parent, child);
     } else {
       return new File(parent, child);
@@ -55,7 +55,7 @@ public enum SystemFileFactory {
 
   public File getFile(File parent, String child) {
     if (fsType.equals(FSType.HDFS)) {
-      throw new UnsupportedOperationException(UNSUPPORT_FILE_SYSTEM + fsType.name());
+      throw new UnsupportedOperationException(UNSUPPORTED_FILE_SYSTEM + fsType.name());
       // return new HDFSFile(parent, child);
     } else {
       return new File(parent, child);
@@ -64,7 +64,7 @@ public enum SystemFileFactory {
 
   public File getFile(URI uri) {
     if (fsType.equals(FSType.HDFS)) {
-      throw new UnsupportedOperationException(UNSUPPORT_FILE_SYSTEM + fsType.name());
+      throw new UnsupportedOperationException(UNSUPPORTED_FILE_SYSTEM + fsType.name());
       // return new HDFSFile(uri);
     } else {
       return new File(uri);
@@ -72,10 +72,13 @@ public enum SystemFileFactory {
   }
 
   public void makeDirIfNecessary(String dir) throws IOException {
-    File file = getFile(dir);
-    if (file.exists() && file.isDirectory()) {
+    File directory = getFile(dir);
+    if (directory.isFile()) {
+      directory = directory.getParentFile();
+    }
+    if (directory.exists()) {
       return;
     }
-    FileUtils.forceMkdir(file);
+    FileUtils.forceMkdir(directory);
   }
 }
diff --git a/iotdb-client/isession/pom.xml b/iotdb-core/pom.xml
similarity index 76%
copy from iotdb-client/isession/pom.xml
copy to iotdb-core/pom.xml
index 1d1fee79eb1..309fee956a4 100644
--- a/iotdb-client/isession/pom.xml
+++ b/iotdb-core/pom.xml
@@ -20,19 +20,23 @@
 
 -->
 <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>
-        <artifactId>iotdb-parent</artifactId>
         <groupId>org.apache.iotdb</groupId>
+        <artifactId>iotdb-parent</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>isession</artifactId>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>service-rpc</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
+    <artifactId>iotdb-core</artifactId>
+    <packaging>pom</packaging>
+    <name>IoTDB: Core</name>
+    <modules>
+        <module>antlr</module>
+        <module>confignode</module>
+        <module>consensus</module>
+        <module>datanode</module>
+        <module>metrics</module>
+        <module>mlnode</module>
+        <module>node-commons</module>
+        <module>tsfile</module>
+    </modules>
 </project>
diff --git a/iotdb-core/tsfile/pom.xml b/iotdb-core/tsfile/pom.xml
index bb7c06c1791..bcde345f354 100644
--- a/iotdb-core/tsfile/pom.xml
+++ b/iotdb-core/tsfile/pom.xml
@@ -23,89 +23,17 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-core</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>tsfile</artifactId>
-    <name>TsFile</name>
+    <name>IoTDB: Core: TsFile</name>
     <description>A columnar file format designed for time-series data</description>
-    <url>https://github.com/thulab/iotdb/tree/master/tsfile</url>
     <properties>
         <tsfile.test.skip>false</tsfile.test.skip>
         <tsfile.it.skip>${tsfile.test.skip}</tsfile.it.skip>
         <tsfile.ut.skip>${tsfile.test.skip}</tsfile.ut.skip>
     </properties>
-    <dependencies>
-        <dependency>
-            <groupId>com.github.luben</groupId>
-            <artifactId>zstd-jni</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.xerial.snappy</groupId>
-            <artifactId>snappy-java</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.lz4</groupId>
-            <artifactId>lz4-java</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.code.gson</groupId>
-            <artifactId>gson</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.openjdk.jol</groupId>
-            <artifactId>jol-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>io.airlift</groupId>
-            <artifactId>slice</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.tukaani</groupId>
-            <artifactId>xz</artifactId>
-            <scope>compile</scope>
-        </dependency>
-        <!-- for mocked test-->
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-module-junit4</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-api-mockito2</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.awaitility</groupId>
-            <artifactId>awaitility</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <!-- antlr -->
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-antlr</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
     <build>
         <plugins>
             <!--
@@ -177,6 +105,76 @@
             </plugin>
         </plugins>
     </build>
+    <dependencies>
+        <dependency>
+            <groupId>com.github.luben</groupId>
+            <artifactId>zstd-jni</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.xerial.snappy</groupId>
+            <artifactId>snappy-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.lz4</groupId>
+            <artifactId>lz4-java</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.openjdk.jol</groupId>
+            <artifactId>jol-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.airlift</groupId>
+            <artifactId>slice</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.tukaani</groupId>
+            <artifactId>xz</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <!-- for mocked test-->
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-module-junit4</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-api-mockito2</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.awaitility</groupId>
+            <artifactId>awaitility</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <!-- antlr -->
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-antlr</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
     <profiles>
         <profile>
             <id>skipTsfileTests</id>
diff --git a/iotdb-protocol/openapi/pom.xml b/iotdb-protocol/openapi/pom.xml
index cd996a1eda3..5451217f5a9 100644
--- a/iotdb-protocol/openapi/pom.xml
+++ b/iotdb-protocol/openapi/pom.xml
@@ -20,14 +20,14 @@
 
 -->
 <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>
-        <artifactId>iotdb-parent</artifactId>
         <groupId>org.apache.iotdb</groupId>
+        <artifactId>iotdb-protocol</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
     <artifactId>openapi</artifactId>
+    <name>IoTDB: Protocol: OpenAPI</name>
     <build>
         <plugins>
             <plugin>
diff --git a/iotdb-client/isession/pom.xml b/iotdb-protocol/pom.xml
similarity index 77%
copy from iotdb-client/isession/pom.xml
copy to iotdb-protocol/pom.xml
index 1d1fee79eb1..60ec53bf8c3 100644
--- a/iotdb-client/isession/pom.xml
+++ b/iotdb-protocol/pom.xml
@@ -20,19 +20,21 @@
 
 -->
 <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>
-        <artifactId>iotdb-parent</artifactId>
         <groupId>org.apache.iotdb</groupId>
+        <artifactId>iotdb-parent</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>isession</artifactId>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>service-rpc</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
+    <artifactId>iotdb-protocol</artifactId>
+    <packaging>pom</packaging>
+    <name>IoTDB: Protocol</name>
+    <modules>
+        <module>openapi</module>
+        <module>thrift</module>
+        <module>thrift-commons</module>
+        <module>thrift-confignode</module>
+        <module>thrift-iot-consensus</module>
+        <module>thrift-mlnode</module>
+    </modules>
 </project>
diff --git a/iotdb-protocol/thrift-commons/pom.xml b/iotdb-protocol/thrift-commons/pom.xml
index 6d5a1a6648b..85cda9ed209 100644
--- a/iotdb-protocol/thrift-commons/pom.xml
+++ b/iotdb-protocol/thrift-commons/pom.xml
@@ -23,19 +23,12 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-protocol</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>iotdb-thrift-commons</artifactId>
-    <name>rpc-thrift-commons</name>
+    <name>IoTDB: Protocol: Thrift Commons</name>
     <description>RPC (Thrift) common framework.</description>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.thrift</groupId>
-            <artifactId>libthrift</artifactId>
-        </dependency>
-    </dependencies>
     <build>
         <plugins>
             <plugin>
@@ -59,4 +52,10 @@
             </plugin>
         </plugins>
     </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.thrift</groupId>
+            <artifactId>libthrift</artifactId>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/iotdb-protocol/thrift-confignode/pom.xml b/iotdb-protocol/thrift-confignode/pom.xml
index 53a592b9a53..2a846b7719b 100644
--- a/iotdb-protocol/thrift-confignode/pom.xml
+++ b/iotdb-protocol/thrift-confignode/pom.xml
@@ -23,24 +23,12 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-protocol</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>iotdb-thrift-confignode</artifactId>
-    <name>rpc-thrift-confignode</name>
+    <name>IoTDB: Protocol: Thrift Config Node</name>
     <description>RPC (Thrift) framework among ConfigNodes.</description>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.thrift</groupId>
-            <artifactId>libthrift</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-thrift-commons</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
     <build>
         <plugins>
             <plugin>
@@ -64,4 +52,15 @@
             </plugin>
         </plugins>
     </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.thrift</groupId>
+            <artifactId>libthrift</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-thrift-commons</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/iotdb-protocol/thrift-iot-consensus/pom.xml b/iotdb-protocol/thrift-iot-consensus/pom.xml
index 3e3a84fbe65..5cc4001f6da 100644
--- a/iotdb-protocol/thrift-iot-consensus/pom.xml
+++ b/iotdb-protocol/thrift-iot-consensus/pom.xml
@@ -23,24 +23,12 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-protocol</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>thrift-iot-consensus</artifactId>
-    <name>rpc-thrift-iot-consensus</name>
+    <name>IoTDB: Protocol: Thrift Consensus</name>
     <description>Rpc modules for iot consensus algorithm</description>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.thrift</groupId>
-            <artifactId>libthrift</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-thrift-commons</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
     <build>
         <plugins>
             <plugin>
@@ -64,4 +52,15 @@
             </plugin>
         </plugins>
     </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.thrift</groupId>
+            <artifactId>libthrift</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-thrift-commons</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/iotdb-protocol/thrift-mlnode/pom.xml b/iotdb-protocol/thrift-mlnode/pom.xml
index 59d8446f828..86460f78bbb 100644
--- a/iotdb-protocol/thrift-mlnode/pom.xml
+++ b/iotdb-protocol/thrift-mlnode/pom.xml
@@ -23,24 +23,12 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-protocol</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>iotdb-thrift-mlnode</artifactId>
-    <name>rpc-thrift-mlnode</name>
+    <name>IoTDB: Protocol: Thrift ML Node</name>
     <description>RPC (Thrift) framework among MLNodes.</description>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.thrift</groupId>
-            <artifactId>libthrift</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-thrift-commons</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
     <build>
         <plugins>
             <plugin>
@@ -64,4 +52,15 @@
             </plugin>
         </plugins>
     </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.thrift</groupId>
+            <artifactId>libthrift</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-thrift-commons</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/iotdb-protocol/thrift/pom.xml b/iotdb-protocol/thrift/pom.xml
index 592b380092f..0b6382efe16 100644
--- a/iotdb-protocol/thrift/pom.xml
+++ b/iotdb-protocol/thrift/pom.xml
@@ -23,24 +23,12 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>iotdb-parent</artifactId>
+        <artifactId>iotdb-protocol</artifactId>
         <version>1.3.0-SNAPSHOT</version>
-        <relativePath>../../pom.xml</relativePath>
     </parent>
     <artifactId>iotdb-thrift</artifactId>
-    <name>rpc-thrift</name>
+    <name>IoTDB: Protocol: Thrift RPC</name>
     <description>RPC (Thrift) framework for client and server.</description>
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.thrift</groupId>
-            <artifactId>libthrift</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.iotdb</groupId>
-            <artifactId>iotdb-thrift-commons</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-    </dependencies>
     <build>
         <plugins>
             <!--
@@ -100,4 +88,15 @@
             </plugin>
         </plugins>
     </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.thrift</groupId>
+            <artifactId>libthrift</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>iotdb-thrift-commons</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/library-udf/pom.xml b/library-udf/pom.xml
index b82c612545c..a023b9e2bde 100644
--- a/library-udf/pom.xml
+++ b/library-udf/pom.xml
@@ -20,13 +20,15 @@
 
 -->
 <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>
         <artifactId>iotdb-parent</artifactId>
         <groupId>org.apache.iotdb</groupId>
         <version>1.3.0-SNAPSHOT</version>
     </parent>
-    <modelVersion>4.0.0</modelVersion>
     <artifactId>library-udf</artifactId>
+    <name>IoTDB: UDF</name>
+    <!-- Needed for fetching lt_downsampling_java8 -->
     <repositories>
         <repository>
             <id>jitpack.io</id>
diff --git a/pom.xml b/pom.xml
index 7cd096b368b..b6626e228c3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,46 +79,13 @@
         </mailingList>
     </mailingLists>
     <modules>
-        <module>iotdb-core/tsfile</module>
-        <module>iotdb-core/antlr</module>
-        <module>iotdb-protocol/thrift</module>
-        <module>iotdb-protocol/thrift-commons</module>
-        <module>iotdb-protocol/thrift-confignode</module>
-        <module>iotdb-protocol/thrift-iot-consensus</module>
-        <module>iotdb-protocol/thrift-mlnode</module>
-        <module>iotdb-client/service-rpc</module>
-        <module>iotdb-client/jdbc</module>
-        <module>iotdb-client/session</module>
-        <module>iotdb-client/cli</module>
-        <module>iotdb-protocol/openapi</module>
-        <module>iotdb-core/datanode</module>
+        <module>iotdb-api</module>
+        <module>iotdb-client</module>
+        <module>iotdb-connector</module>
+        <module>iotdb-core</module>
+        <module>iotdb-protocol</module>
         <module>example</module>
-        <module>iotdb-connector/grafana-plugin</module>
-        <module>iotdb-connector/grafana-connector</module>
-        <module>iotdb-connector/spark-tsfile</module>
-        <module>iotdb-connector/hadoop</module>
-        <module>iotdb-connector/spark-iotdb-connector/scala_2.11</module>
-        <module>iotdb-connector/spark-iotdb-connector/scala_2.12</module>
-        <module>iotdb-connector/flink-tsfile-connector</module>
-        <module>iotdb-connector/flink-iotdb-connector</module>
-        <module>distribution</module>
-        <module>iotdb-connector/hive-connector</module>
-        <module>iotdb-core/node-commons</module>
-        <module>iotdb-core/confignode</module>
-        <module>iotdb-connector/zeppelin-interpreter</module>
-        <module>iotdb-client/client-py</module>
-        <module>iotdb-client/compile-tools</module>
-        <module>iotdb-client/client-cpp</module>
-        <module>iotdb-core/metrics</module>
-        <module>integration-test</module>
-        <module>iotdb-core/consensus</module>
         <module>library-udf</module>
-        <module>iotdb-api/udf-api</module>
-        <module>iotdb-api/trigger-api</module>
-        <module>iotdb-api/external-api</module>
-        <module>iotdb-client/isession</module>
-        <module>iotdb-core/mlnode</module>
-        <module>iotdb-api/pipe-api</module>
     </modules>
     <!-- Properties Management -->
     <properties>
@@ -1132,7 +1099,7 @@
           They are automatically activated depending on the OS you are using.
         -->
         <profile>
-            <id>windows</id>
+            <id>os-windows</id>
             <activation>
                 <os>
                     <family>windows</family>
@@ -1149,7 +1116,7 @@
         </profile>
         <!-- Has to be listed before "mac" as it seems a mac is both "mac" and "unix" -->
         <profile>
-            <id>unix</id>
+            <id>os-unix</id>
             <activation>
                 <os>
                     <family>unix</family>
@@ -1165,7 +1132,7 @@
             </properties>
         </profile>
         <profile>
-            <id>mac</id>
+            <id>os-mac</id>
             <activation>
                 <os>
                     <family>mac</family>
@@ -1184,8 +1151,7 @@
         <profile>
             <id>java-11-and-above</id>
             <activation>
-                <!-- This needs to be updated as soon as Java 20 is shipped -->
-                <jdk>[11,20)</jdk>
+                <jdk>[11,)</jdk>
             </activation>
             <properties>
                 <maven.compiler.release>8</maven.compiler.release>
@@ -1214,8 +1180,7 @@
         <profile>
             <id>java-16-and-above</id>
             <activation>
-                <!-- This needs to be updated as soon as Java 20 is shipped -->
-                <jdk>[16,20)</jdk>
+                <jdk>[16,)</jdk>
             </activation>
             <properties>
                 <maven.compiler.release>8</maven.compiler.release>
@@ -1331,6 +1296,13 @@
                 </plugins>
             </build>
         </profile>
+        <!-- Enable integration-testsuite on demand, as this takes quite a long time to run -->
+        <profile>
+            <id>with-integration-tests</id>
+            <modules>
+                <module>integration-test</module>
+            </modules>
+        </profile>
         <!-- Make sure the source assembly has the right name -->
         <profile>
             <id>apache-release</id>