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

haonan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 6770dba  New distribution structure for v0.12 (#2646)
6770dba is described below

commit 6770dbae96c303e40f3d67789cf599cd86812985
Author: Xiangdong Huang <[email protected]>
AuthorDate: Tue Feb 23 17:46:52 2021 +0800

    New distribution structure for v0.12 (#2646)
    
    Co-authored-by: e <[email protected]>
    Co-authored-by: xiangdong huang <[email protected]>
---
 .github/workflows/client.yml                       |   4 +-
 .github/workflows/main-unix.yml                    |   7 +-
 .github/workflows/main-win.yml                     |   2 +-
 .github/workflows/sonar-coveralls.yml              |   3 +-
 README.md                                          |   2 +
 client-cpp/pom.xml                                 | 156 ++++----
 client-cpp/src/assembly/client-cpp.xml             |   1 +
 cluster/src/assembly/cluster.xml                   |   8 +-
 compile-tools/thrift/pom.xml                       | 432 +++++++--------------
 compile-tools/thrift/src/assembly/compiler.xml     |  37 --
 compile-tools/thrift/src/assembly/cpp.xml          |  51 ---
 compile-tools/thrift/src/assembly/python.xml       |  38 --
 distribution/pom.xml                               |  31 +-
 .../src/assembly/{distribution.xml => all.xml}     |  57 +--
 distribution/src/assembly/cli.xml                  |  54 +++
 distribution/src/assembly/client-cpp.xml           |  38 ++
 .../src/assembly/{distribution.xml => cluster.xml} |  64 ++-
 distribution/src/assembly/common-files.xml         |  48 +++
 distribution/src/assembly/grafana.xml              |  48 +++
 .../src/assembly/{distribution.xml => server.xml}  |  49 +--
 docker/src/main/Dockerfile                         |   2 +-
 example/client-cpp-example/pom.xml                 | 214 +++++-----
 pom.xml                                            |  29 +-
 23 files changed, 644 insertions(+), 731 deletions(-)

diff --git a/.github/workflows/client.yml b/.github/workflows/client.yml
index 8b69d8e..e685c6a 100644
--- a/.github/workflows/client.yml
+++ b/.github/workflows/client.yml
@@ -61,7 +61,7 @@ jobs:
           key: client-${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
           restore-keys: ${{ runner.os }}-m2-
       - name: Test with Maven
-        run:  mvn -B clean integration-test -Pclient-cpp 
-Dtsfile.test.skip=true -Djdbc.test.skip=true -Diotdb.test.skip=true 
-Dtest.port.closed=true -pl server,client-cpp,example/client-cpp-example -am
+        run:  mvn -B clean integration-test -P compile-cpp 
-Dtsfile.test.skip=true -Djdbc.test.skip=true -Diotdb.test.skip=true 
-Dtest.port.closed=true -pl server,client-cpp,example/client-cpp-example -am
 
   build-win:
     strategy:
@@ -97,4 +97,4 @@ jobs:
         run: cd /d/a/cpp && unzip win_flex_bison.zip && mv win_flex.exe 
flex.exe && mv win_bison.exe bison.exe && echo 'export PATH=/d/a/cpp:$PATH' >> 
~/.bash_profile && source ~/.bash_profile
       - name: Test with Maven
         shell: bash
-        run:  source ~/.bash_profile && mvn -B clean integration-test 
-Pclient-cpp -Dboost.include.dir=/d/a/cpp/boost_1_72_0 
-Dboost.library.dir=/d/a/cpp/boost_1_72_0/stage/lib -Dtsfile.test.skip=true 
-Djdbc.test.skip=true -Diotdb.test.skip=true -Dtest.port.closed=true 
-Denforcer.skip=true -pl server,client-cpp,example/client-cpp-example -am
\ No newline at end of file
+        run:  source ~/.bash_profile && mvn -B clean integration-test -P 
compile-cpp -Dboost.include.dir=/d/a/cpp/boost_1_72_0 
-Dboost.library.dir=/d/a/cpp/boost_1_72_0/stage/lib -Dtsfile.test.skip=true 
-Djdbc.test.skip=true -Diotdb.test.skip=true -Dtest.port.closed=true 
-Denforcer.skip=true -pl server,client-cpp,example/client-cpp-example -am
\ No newline at end of file
diff --git a/.github/workflows/main-unix.yml b/.github/workflows/main-unix.yml
index a8bb4a0..15aa14e 100644
--- a/.github/workflows/main-unix.yml
+++ b/.github/workflows/main-unix.yml
@@ -26,7 +26,7 @@ jobs:
       fail-fast: false
       max-parallel: 20
       matrix:
-        java: [ 8, 11 ]
+        java: [ 8, 11, 15 ]
         os: [ ubuntu-latest, macos-latest ]
     runs-on: ${{ matrix.os}}
 
@@ -43,7 +43,8 @@ jobs:
           key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
           restore-keys: ${{ runner.os }}-m2-
       - name: Check Apache Rat
-        run: mvn -B apache-rat:check -P client-cpp -P site -P code-coverage
+        run: mvn -B apache-rat:check -P site -P code-coverage
       - name: IT/UT Test
         shell: bash
-        run: mvn -B clean post-integration-test -Dtest.port.closed=true
+        # we do not compile client-cpp for saving time, it is tested in 
client.yml
+        run:  mvn -B clean post-integration-test -Dtest.port.closed=true
diff --git a/.github/workflows/main-win.yml b/.github/workflows/main-win.yml
index 3a4acba..785bb32 100644
--- a/.github/workflows/main-win.yml
+++ b/.github/workflows/main-win.yml
@@ -26,7 +26,7 @@ jobs:
       fail-fast: false
       max-parallel: 20
       matrix:
-        java: [8, 11]
+        java: [8, 11, 15]
           # to reduce the CI time cost; we split the whole CI to 3 parts:
           # modules except the server and the cluster:
           #   -Diotdb.skip.test=true -Dcluster.skip.test=true
diff --git a/.github/workflows/sonar-coveralls.yml 
b/.github/workflows/sonar-coveralls.yml
index 2bee2bc..c341f55 100644
--- a/.github/workflows/sonar-coveralls.yml
+++ b/.github/workflows/sonar-coveralls.yml
@@ -37,7 +37,8 @@ jobs:
           key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
           restore-keys: ${{ runner.os }}-m2-
       - name: IT/UT Test
-        run: mvn -B clean post-integration-test -Dtest.port.closed=true 
-Pcode-coverage
+        # we do not compile client-cpp for saving time, it is tested in 
client.yml
+        run:  mvn -B clean post-integration-test -Dtest.port.closed=true 
-Pcode-coverage
       - name: Code Coverage (Coveralls)
         if: ${{ success() && github.repository == 'apache/iotdb'}}
         run: |
diff --git a/README.md b/README.md
index b5331bd..3cec9c8 100644
--- a/README.md
+++ b/README.md
@@ -136,6 +136,8 @@ Under the root path of iotdb:
 > mvn clean package -DskipTests
 ```
 
+Using `-P compile-cpp` for compiling cpp client (For more details, read 
client-cpp's Readme file.)
+
 Then the binary version (including both server and cli) can be found at 
**distribution/target/apache-iotdb-{project.version}-bin.zip**
 
 > NOTE: Directories "thrift/target/generated-sources/thrift" and 
 > "antlr/target/generated-sources/antlr4" need to be added to sources roots to 
 > avoid compilation errors in the IDE.
diff --git a/client-cpp/pom.xml b/client-cpp/pom.xml
index e5762d7..aef589f 100644
--- a/client-cpp/pom.xml
+++ b/client-cpp/pom.xml
@@ -61,7 +61,7 @@
             </activation>
             <properties>
                 <os.suffix>linux</os.suffix>
-                <os.classifier>linux-x86_64</os.classifier>
+                <!-- use Makefile as default cmake generator, users may 
specify other generators -->
                 <cmake.generator>Unix Makefiles</cmake.generator>
                 
<cmake.root.dir>${project.parent.basedir}/compile-tools/thrift/target/cmake-${cmake-version}-Linux-x86_64/</cmake.root.dir>
                 
<thrift.exec.absolute.path>${project.parent.basedir}/compile-tools/thrift/target/build/compiler/cpp/bin/thrift</thrift.exec.absolute.path>
@@ -77,7 +77,7 @@
             </activation>
             <properties>
                 <os.suffix>mac</os.suffix>
-                <os.classifier>mac-x86_64</os.classifier>
+                <!-- use Makefile as default cmake generator, users may 
specify other generators -->
                 <cmake.generator>Unix Makefiles</cmake.generator>
                 
<cmake.root.dir>${project.parent.basedir}/compile-tools/thrift/target/cmake-${cmake-version}-Darwin-x86_64/CMake.app/Contents</cmake.root.dir>
                 
<thrift.exec.absolute.path>${project.parent.basedir}/compile-tools/thrift/target/build/compiler/cpp/bin/thrift</thrift.exec.absolute.path>
@@ -93,7 +93,7 @@
             </activation>
             <properties>
                 <os.suffix>win</os.suffix>
-                <os.classifier>windows-x86_64</os.classifier>
+                <!-- use MSVC 2019 as default cmake generator, users may 
specify other generators -->
                 <cmake.generator>Visual Studio 16 2019</cmake.generator>
                 
<cmake.root.dir>${project.parent.basedir}/compile-tools/thrift/target/cmake-${cmake-version}-win64-x64/</cmake.root.dir>
                 
<thrift.exec.absolute.path>${project.parent.basedir}/compile-tools/thrift/target/build/compiler/cpp/bin/${cmake.build.type}/thrift.exe</thrift.exec.absolute.path>
@@ -103,21 +103,38 @@
             </properties>
         </profile>
         <profile>
-            <id>thrift-generation</id>
-            <activation>
-                <file>
-                    <exists>../thrift/src/main/thrift</exists>
-                </file>
-            </activation>
+            <id>compile-cpp</id>
             <build>
                 <plugins>
+                    <!-- Build and do session integration test -->
+                    <plugin>
+                        <artifactId>maven-resources-plugin</artifactId>
+                        <version>2.6</version>
+                        <executions>
+                            <execution>
+                                <id>copy-test-resources</id>
+                                <phase>validate</phase>
+                                <goals>
+                                    <goal>copy-resources</goal>
+                                </goals>
+                                <configuration>
+                                    
<outputDirectory>${project.build.directory}/build/test</outputDirectory>
+                                    <resources>
+                                        <resource>
+                                            
<directory>${project.basedir}/src/test</directory>
+                                            <filtering>true</filtering>
+                                        </resource>
+                                    </resources>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
                     <plugin>
                         <groupId>com.coderplus.maven.plugins</groupId>
                         <artifactId>copy-rename-maven-plugin</artifactId>
                         <version>1.0</version>
                         <executions>
                             <execution>
-                                <!-- Copy rpc.thrift into target directory -->
                                 <id>copy-thrift-source</id>
                                 <goals>
                                     <goal>copy</goal>
@@ -229,6 +246,60 @@
                                     
<projectDirectory>${project.build.directory}/build/main</projectDirectory>
                                 </configuration>
                             </execution>
+                        </executions>
+                    </plugin>
+                    <!--Package all C++ header files and client library-->
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-assembly-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>package-client-cpp</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>single</goal>
+                                </goals>
+                                <configuration>
+                                    
<finalName>${project.artifactId}-${project.version}</finalName>
+                                    <descriptors>
+                                        
<descriptor>src/assembly/client-cpp.xml</descriptor>
+                                    </descriptors>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>com.googlecode.maven-download-plugin</groupId>
+                        <artifactId>download-maven-plugin</artifactId>
+                        <version>1.3.0</version>
+                        <executions>
+                            <!-- Download the Catch2 header file. -->
+                            <execution>
+                                <id>get-catch2</id>
+                                <phase>generate-resources</phase>
+                                <goals>
+                                    <goal>wget</goal>
+                                </goals>
+                                <configuration>
+                                    <url>${catch2.url}</url>
+                                    <unpack>false</unpack>
+                                    
<outputDirectory>${project.build.directory}/build/test/catch2</outputDirectory>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>cppTest</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>com.googlecode.cmake-maven-project</groupId>
+                        <artifactId>cmake-maven-plugin</artifactId>
+                        <version>3.7.2-b1</version>
+                        <executions>
                             <!-- Generate Cmake build directory to compile 
testing program -->
                             <execution>
                                 <id>cmake-generate-test</id>
@@ -276,71 +347,6 @@
                             </execution>
                         </executions>
                     </plugin>
-                    <!--Package all C++ header files and client library-->
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-assembly-plugin</artifactId>
-                        <executions>
-                            <execution>
-                                <id>package-client-cpp</id>
-                                <phase>package</phase>
-                                <goals>
-                                    <goal>single</goal>
-                                </goals>
-                                <configuration>
-                                    
<finalName>${project.artifactId}-${project.version}</finalName>
-                                    <descriptors>
-                                        
<descriptor>src/assembly/client-cpp.xml</descriptor>
-                                    </descriptors>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <!-- Build and do session integration test -->
-                    <plugin>
-                        <artifactId>maven-resources-plugin</artifactId>
-                        <version>2.6</version>
-                        <executions>
-                            <execution>
-                                <id>copy-test-resources</id>
-                                <phase>validate</phase>
-                                <goals>
-                                    <goal>copy-resources</goal>
-                                </goals>
-                                <configuration>
-                                    
<outputDirectory>${project.build.directory}/build/test</outputDirectory>
-                                    <resources>
-                                        <resource>
-                                            
<directory>${project.basedir}/src/test</directory>
-                                            <filtering>true</filtering>
-                                        </resource>
-                                    </resources>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <plugin>
-                        <groupId>com.googlecode.maven-download-plugin</groupId>
-                        <artifactId>download-maven-plugin</artifactId>
-                        <executions>
-                            <!-- Download the Catch2 header file. -->
-                            <execution>
-                                <id>get-catch2</id>
-                                <phase>generate-resources</phase>
-                                <goals>
-                                    <goal>wget</goal>
-                                </goals>
-                                <configuration>
-                                    <url>${catch2.url}</url>
-                                    <unpack>false</unpack>
-                                    
<outputDirectory>${project.build.directory}/build/test/catch2</outputDirectory>
-                                    <skipCache>false</skipCache>
-                                    <!-- must be true to avoid the local 
Catch2 has incorrect vesion.-->
-                                    <overwrite>false</overwrite>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
                     <plugin>
                         <groupId>com.bazaarvoice.maven.plugins</groupId>
                         <artifactId>process-exec-maven-plugin</artifactId>
diff --git a/client-cpp/src/assembly/client-cpp.xml 
b/client-cpp/src/assembly/client-cpp.xml
index c602b60..9de99ea 100644
--- a/client-cpp/src/assembly/client-cpp.xml
+++ b/client-cpp/src/assembly/client-cpp.xml
@@ -21,6 +21,7 @@
     <id>cpp-${os.classifier}</id>
     <formats>
         <format>zip</format>
+        <format>dir</format>
     </formats>
     <includeBaseDirectory>false</includeBaseDirectory>
     <fileSets>
diff --git a/cluster/src/assembly/cluster.xml b/cluster/src/assembly/cluster.xml
index 9fa6af5..66b9e38 100644
--- a/cluster/src/assembly/cluster.xml
+++ b/cluster/src/assembly/cluster.xml
@@ -20,8 +20,12 @@
             <outputDirectory>${file.separator}</outputDirectory>
         </fileSet>
         <fileSet>
-            
<directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources</directory>
-            <outputDirectory>${file.separator}</outputDirectory>
+            
<directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/conf</directory>
+            <outputDirectory>${file.separator}conf</outputDirectory>
+        </fileSet>
+        <fileSet>
+            
<directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/tools</directory>
+            <outputDirectory>${file.separator}tools</outputDirectory>
         </fileSet>
     </fileSets>
 </assembly>
diff --git a/compile-tools/thrift/pom.xml b/compile-tools/thrift/pom.xml
index 0a5c3dd..0564f9e 100644
--- a/compile-tools/thrift/pom.xml
+++ b/compile-tools/thrift/pom.xml
@@ -33,17 +33,24 @@
         <thrift.with.cpp>ON</thrift.with.cpp>
         <thrift.with.csharp>ON</thrift.with.csharp>
         <thrift.with.python>ON</thrift.with.python>
+        <chmod.command>chmod</chmod.command>
+        <chmod.command.para>+x cmake</chmod.command.para>
     </properties>
     <profiles>
-        <!-- Profile for linux -->
         <profile>
-            <id>os-unix</id>
+            <id>os-windows</id>
             <activation>
                 <os>
-                    <family>unix</family>
+                    <family>windows</family>
                 </os>
             </activation>
-            <!-- Make the cmake executable executable (Seems not to be per 
default) -->
+            <properties>
+                <chmod.command>echo</chmod.command>
+                <chmod.command.para>"do nothing"</chmod.command.para>
+            </properties>
+        </profile>
+        <profile>
+            <id>compile-cpp</id>
             <build>
                 <plugins>
                     <plugin>
@@ -59,138 +66,164 @@
                                 </goals>
                                 <configuration>
                                     <basedir>${cmake.root.dir}/bin</basedir>
-                                    <executable>chmod</executable>
-                                    <arguments>
-                                        <argument>+x</argument>
-                                        <argument>cmake</argument>
-                                    </arguments>
+                                    <executable>${chmod.command}</executable>
+                                    
<commandlineArgs>${chmod.command.para}</commandlineArgs>
                                 </configuration>
                             </execution>
                         </executions>
                     </plugin>
-                </plugins>
-            </build>
-        </profile>
-        <!-- Profile for mac -->
-        <profile>
-            <id>os-mac</id>
-            <activation>
-                <os>
-                    <family>mac</family>
-                </os>
-            </activation>
-            <!-- Make the cmake executable executable (Seems not to be per 
default) -->
-            <build>
-                <plugins>
                     <plugin>
-                        <groupId>org.codehaus.mojo</groupId>
-                        <artifactId>exec-maven-plugin</artifactId>
-                        <version>1.6.0</version>
+                        <groupId>com.googlecode.maven-download-plugin</groupId>
+                        <artifactId>download-maven-plugin</artifactId>
+                        <version>1.3.0</version>
                         <executions>
+                            <!-- Download the CMake binary distribution for 
this platform. -->
                             <execution>
-                                <id>make-cmake-executable</id>
-                                <phase>process-sources</phase>
+                                <id>get-cmake</id>
+                                <phase>generate-sources</phase>
                                 <goals>
-                                    <goal>exec</goal>
+                                    <goal>wget</goal>
                                 </goals>
                                 <configuration>
-                                    <basedir>${cmake.root.dir}/bin</basedir>
-                                    <executable>chmod</executable>
-                                    <arguments>
-                                        <argument>+x</argument>
-                                        <argument>cmake</argument>
-                                    </arguments>
+                                    <url>${cmake.url}</url>
+                                    <unpack>true</unpack>
+                                    
<outputDirectory>${project.build.directory}</outputDirectory>
+                                </configuration>
+                            </execution>
+                            <!-- Download the sources for building the thrift 
compiler -->
+                            <execution>
+                                <id>get-thrift</id>
+                                <phase>generate-sources</phase>
+                                <goals>
+                                    <goal>wget</goal>
+                                </goals>
+                                <configuration>
+                                    
<url>https://archive.apache.org/dist/thrift/${thrift.version}/thrift-${thrift.version}.zip</url>
+                                    <unpack>true</unpack>
+                                    
<outputDirectory>${project.build.directory}</outputDirectory>
                                 </configuration>
                             </execution>
                         </executions>
                     </plugin>
-                </plugins>
-            </build>
-        </profile>
-        <!-- If C++ is enabled, we need to add another assembly to the build 
to package the libraries -->
-        <profile>
-            <id>with-cpp</id>
-            <properties>
-                <thrift.with.cpp>ON</thrift.with.cpp>
-            </properties>
-            <build>
-                <plugins>
                     <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-assembly-plugin</artifactId>
+                        <groupId>com.googlecode.cmake-maven-project</groupId>
+                        <artifactId>cmake-maven-plugin</artifactId>
+                        <version>3.7.2-b1</version>
                         <executions>
+                            <!-- Uses a CMake generator to generate the build 
using the build tool of choice -->
+                            <execution>
+                                <id>cmake-generate</id>
+                                <phase>generate-sources</phase>
+                                <goals>
+                                    <goal>generate</goal>
+                                </goals>
+                                <configuration>
+                                    <classifier>${os.classifier}</classifier>
+                                    <!--
+                        We need to use a newer version of cmake, so disable 
downloading
+                        and tell the plugin where to find that version.
+                      -->
+                                    <downloadBinaries>false</downloadBinaries>
+                                    
<sourcePath>${project.build.directory}/thrift-${thrift.version}</sourcePath>
+                                    
<targetPath>${project.build.directory}/build</targetPath>
+                                    <generator>${cmake.generator}</generator>
+                                    <options>
+                                        <!-- Disable testing for now -->
+                                        <option>-DBUILD_TESTING=OFF</option>
+                                        <!-- Enable and disable the building 
of code generators for different languages -->
+                                        
<option>-DTHRIFT_COMPILER_AS3=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_C_GLIB=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_CL=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_CPP=${thrift.with.cpp}</option>
+                                        
<option>-DTHRIFT_COMPILER_CSHARP=${thrift.with.csharp}</option>
+                                        
<option>-DTHRIFT_COMPILER_D=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_DART=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_DELPHI=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_ERL=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_GO=ON</option>
+                                        
<option>-DTHRIFT_COMPILER_GV=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_HAXE=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_HS=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_HTML=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_JAVA=ON</option>
+                                        
<option>-DTHRIFT_COMPILER_JAVAME=ON</option>
+                                        
<option>-DTHRIFT_COMPILER_JS=ON</option>
+                                        
<option>-DTHRIFT_COMPILER_JSON=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_LUA=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_NETCORE=ON</option>
+                                        
<option>-DTHRIFT_COMPILER_NETSTD=ON</option>
+                                        
<option>-DTHRIFT_COMPILER_OCAML=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_PERL=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_PHP=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_PY=${thrift.with.python}</option>
+                                        
<option>-DTHRIFT_COMPILER_RB=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_RS=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_ST=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_SWIFT=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_XML=OFF</option>
+                                        
<option>-DTHRIFT_COMPILER_XSD=OFF</option>
+                                        <!-- Enable and disable the building 
of libs for different languages -->
+                                        <option>-DBUILD_C_GLIB=OFF</option>
+                                        
<option>-DBUILD_CPP=${thrift.with.cpp}</option>
+                                        <!-- Unfortunately this doesn't exist 
yet -->
+                                        
<option>-DBUILD_CSHARP=${thrift.with.csharp}</option>
+                                        <!-- Don't build Java, as the libs are 
available via Maven -->
+                                        <option>-DBUILD_JAVA=OFF</option>
+                                        
<option>-DBUILD_PYTHON=${thrift.with.python}</option>
+                                        <option>-DBUILD_HASKELL=OFF</option>
+                                        <option>-DWITH_SHARED_LIB=OFF</option>
+                                        <!-- Generate libthrift.a to compile 
IoTDB Session -->
+                                        <option>-DWITH_STATIC_LIB=ON</option>
+                                        
<option>-DCMAKE_POSITION_INDEPENDENT_CODE=ON</option>
+                                        <!-- Specify openssl include path for 
Mac OS -->
+                                        <option>${openssl.include.dir}</option>
+                                        <!-- Specify new version Bison path 
for Mac OS -->
+                                        
<option>${bison.executable.dir}</option>
+                                        
<option>-DBOOST_INCLUDEDIR=${boost.include.dir}</option>
+                                        
<option>-DBOOST_LIBRARYDIR=${boost.library.dir}</option>
+                                    </options>
+                                </configuration>
+                            </execution>
+                            <!-- Actually executes the build -->
                             <execution>
-                                <id>package-thrift-cpp</id>
-                                <phase>package</phase>
+                                <id>cmake-compile</id>
+                                <phase>compile</phase>
                                 <goals>
-                                    <goal>single</goal>
+                                    <goal>compile</goal>
                                 </goals>
                                 <configuration>
-                                    
<finalName>${project.artifactId}-${project.version}</finalName>
-                                    <descriptors>
-                                        
<descriptor>src/assembly/cpp.xml</descriptor>
-                                    </descriptors>
+                                    <classifier>${os.classifier}</classifier>
+                                    <config>${cmake.build.type}</config>
+                                    <!--
+                        We need to use a newer version of cmake, so disable 
downloading
+                        and tell the plugin where to find that version.
+                      -->
+                                    <downloadBinaries>false</downloadBinaries>
+                                    <!-- The directory where the "generate" 
step generated the build configuration -->
+                                    
<projectDirectory>${project.build.directory}/build</projectDirectory>
                                 </configuration>
                             </execution>
                         </executions>
                     </plugin>
-                </plugins>
-            </build>
-        </profile>
-        <!-- If C# is enabled, we need to add another assembly to the build to 
package the libraries -->
-        <profile>
-            <id>with-dotnet</id>
-            <properties>
-                <thrift.with.csharp>ON</thrift.with.csharp>
-            </properties>
-            <build>
-                <plugins>
-                    <!-- This library is currently not buildable via CMake 
(yet) -->
-                    <!--plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-assembly-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>package-thrift-cpp</id>
-                <phase>package</phase>
-                <goals>
-                  <goal>single</goal>
-                </goals>
-                <configuration>
-                  
<finalName>${project.artifactId}-${project.version}</finalName>
-                  <descriptors>
-                    <descriptor>src/assembly/csharp.xml</descriptor>
-                  </descriptors>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin-->
-                </plugins>
-            </build>
-        </profile>
-        <!-- If Python is enabled, we need to add another assembly to the 
build to package the libraries -->
-        <profile>
-            <id>with-python</id>
-            <properties>
-                <thrift.with.python>ON</thrift.with.python>
-            </properties>
-            <build>
-                <plugins>
+                    <!-- Copy the config.h file into thrift include directory 
-->
                     <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-assembly-plugin</artifactId>
+                        <groupId>com.coderplus.maven.plugins</groupId>
+                        <artifactId>copy-rename-maven-plugin</artifactId>
+                        <version>1.0</version>
                         <executions>
                             <execution>
-                                <id>package-thrift-python</id>
-                                <phase>package</phase>
+                                <id>copy-thrift-config</id>
                                 <goals>
-                                    <goal>single</goal>
+                                    <goal>copy</goal>
                                 </goals>
+                                <phase>generate-resources</phase>
                                 <configuration>
-                                    
<finalName>${project.artifactId}-${project.version}</finalName>
-                                    <descriptors>
-                                        
<descriptor>src/assembly/python.xml</descriptor>
-                                    </descriptors>
+                                    <fileSets>
+                                        <fileSet>
+                                            
<sourceFile>${project.build.directory}/build/thrift/config.h</sourceFile>
+                                            
<destinationFile>${project.build.directory}/thrift-${thrift.version}/lib/cpp/src/thrift/config.h</destinationFile>
+                                        </fileSet>
+                                    </fileSets>
                                 </configuration>
                             </execution>
                         </executions>
@@ -199,191 +232,4 @@
             </build>
         </profile>
     </profiles>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>com.googlecode.maven-download-plugin</groupId>
-                <artifactId>download-maven-plugin</artifactId>
-                <executions>
-                    <!-- Download the CMake binary distribution for this 
platform. -->
-                    <execution>
-                        <id>get-cmake</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>wget</goal>
-                        </goals>
-                        <configuration>
-                            <url>${cmake.url}</url>
-                            <unpack>true</unpack>
-                            
<outputDirectory>${project.build.directory}</outputDirectory>
-                            <overwrite>true</overwrite>
-                        </configuration>
-                    </execution>
-                    <!-- Download the sources for building the thrift compiler 
-->
-                    <execution>
-                        <id>get-thrift</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>wget</goal>
-                        </goals>
-                        <configuration>
-                            
<url>https://archive.apache.org/dist/thrift/${thrift.version}/thrift-${thrift.version}.zip</url>
-                            <unpack>true</unpack>
-                            
<outputDirectory>${project.build.directory}</outputDirectory>
-                            <overwrite>false</overwrite>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>com.googlecode.cmake-maven-project</groupId>
-                <artifactId>cmake-maven-plugin</artifactId>
-                <version>3.7.2-b1</version>
-                <executions>
-                    <!-- Uses a CMake generator to generate the build using 
the build tool of choice -->
-                    <execution>
-                        <id>cmake-generate</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <configuration>
-                            <classifier>${os.classifier}</classifier>
-                            <!--
-                We need to use a newer version of cmake, so disable downloading
-                and tell the plugin where to find that version.
-              -->
-                            <downloadBinaries>false</downloadBinaries>
-                            
<sourcePath>${project.build.directory}/thrift-${thrift.version}</sourcePath>
-                            
<targetPath>${project.build.directory}/build</targetPath>
-                            <generator>${cmake.generator}</generator>
-                            <options>
-                                <!-- Disable testing for now -->
-                                <option>-DBUILD_TESTING=OFF</option>
-                                <!-- Enable and disable the building of code 
generators for different languages -->
-                                <option>-DTHRIFT_COMPILER_AS3=OFF</option>
-                                <option>-DTHRIFT_COMPILER_C_GLIB=OFF</option>
-                                <option>-DTHRIFT_COMPILER_CL=OFF</option>
-                                
<option>-DTHRIFT_COMPILER_CPP=${thrift.with.cpp}</option>
-                                
<option>-DTHRIFT_COMPILER_CSHARP=${thrift.with.csharp}</option>
-                                <option>-DTHRIFT_COMPILER_D=OFF</option>
-                                <option>-DTHRIFT_COMPILER_DART=OFF</option>
-                                <option>-DTHRIFT_COMPILER_DELPHI=OFF</option>
-                                <option>-DTHRIFT_COMPILER_ERL=OFF</option>
-                                <option>-DTHRIFT_COMPILER_GO=ON</option>
-                                <option>-DTHRIFT_COMPILER_GV=OFF</option>
-                                <option>-DTHRIFT_COMPILER_HAXE=OFF</option>
-                                <option>-DTHRIFT_COMPILER_HS=OFF</option>
-                                <option>-DTHRIFT_COMPILER_HTML=OFF</option>
-                                <option>-DTHRIFT_COMPILER_JAVA=ON</option>
-                                <option>-DTHRIFT_COMPILER_JAVAME=ON</option>
-                                <option>-DTHRIFT_COMPILER_JS=ON</option>
-                                <option>-DTHRIFT_COMPILER_JSON=OFF</option>
-                                <option>-DTHRIFT_COMPILER_LUA=OFF</option>
-                                <option>-DTHRIFT_COMPILER_NETCORE=ON</option>
-                                <option>-DTHRIFT_COMPILER_NETSTD=ON</option>
-                                <option>-DTHRIFT_COMPILER_OCAML=OFF</option>
-                                <option>-DTHRIFT_COMPILER_PERL=OFF</option>
-                                <option>-DTHRIFT_COMPILER_PHP=OFF</option>
-                                
<option>-DTHRIFT_COMPILER_PY=${thrift.with.python}</option>
-                                <option>-DTHRIFT_COMPILER_RB=OFF</option>
-                                <option>-DTHRIFT_COMPILER_RS=OFF</option>
-                                <option>-DTHRIFT_COMPILER_ST=OFF</option>
-                                <option>-DTHRIFT_COMPILER_SWIFT=OFF</option>
-                                <option>-DTHRIFT_COMPILER_XML=OFF</option>
-                                <option>-DTHRIFT_COMPILER_XSD=OFF</option>
-                                <!-- Enable and disable the building of libs 
for different languages -->
-                                <option>-DBUILD_C_GLIB=OFF</option>
-                                <option>-DBUILD_CPP=${thrift.with.cpp}</option>
-                                <!-- Unfortunately this doesn't exist yet -->
-                                
<option>-DBUILD_CSHARP=${thrift.with.csharp}</option>
-                                <!-- Don't build Java, as the libs are 
available via Maven -->
-                                <option>-DBUILD_JAVA=OFF</option>
-                                
<option>-DBUILD_PYTHON=${thrift.with.python}</option>
-                                <option>-DBUILD_HASKELL=OFF</option>
-                                <option>-DWITH_SHARED_LIB=OFF</option>
-                                <!-- Generate libthrift.a to compile IoTDB 
Session -->
-                                <option>-DWITH_STATIC_LIB=ON</option>
-                                
<option>-DCMAKE_POSITION_INDEPENDENT_CODE=ON</option>
-                                <!-- Specify openssl include path for Mac OS 
-->
-                                <option>${openssl.include.dir}</option>
-                                <!-- Specify new version Bison path for Mac OS 
-->
-                                <option>${bison.executable.dir}</option>
-                                
<option>-DBOOST_INCLUDEDIR=${boost.include.dir}</option>
-                                
<option>-DBOOST_LIBRARYDIR=${boost.library.dir}</option>
-                            </options>
-                        </configuration>
-                    </execution>
-                    <!-- Actually executes the build -->
-                    <execution>
-                        <id>cmake-compile</id>
-                        <phase>compile</phase>
-                        <goals>
-                            <goal>compile</goal>
-                        </goals>
-                        <configuration>
-                            <classifier>${os.classifier}</classifier>
-                            <config>${cmake.build.type}</config>
-                            <!--
-                We need to use a newer version of cmake, so disable downloading
-                and tell the plugin where to find that version.
-              -->
-                            <downloadBinaries>false</downloadBinaries>
-                            <!-- The directory where the "generate" step 
generated the build configuration -->
-                            
<projectDirectory>${project.build.directory}/build</projectDirectory>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <!-- Add the thrift compiler executable to the build -->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>source-release-assembly</id>
-                        <configuration>
-                            <skip>true</skip>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>package-thrift-compiler</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                        <configuration>
-                            
<finalName>${project.artifactId}-${project.version}</finalName>
-                            <descriptors>
-                                
<descriptor>src/assembly/compiler.xml</descriptor>
-                            </descriptors>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <!-- Copy the config.h file into thrift include directory -->
-            <plugin>
-                <groupId>com.coderplus.maven.plugins</groupId>
-                <artifactId>copy-rename-maven-plugin</artifactId>
-                <version>1.0</version>
-                <executions>
-                    <execution>
-                        <id>copy-thrift-config</id>
-                        <goals>
-                            <goal>copy</goal>
-                        </goals>
-                        <phase>generate-resources</phase>
-                        <configuration>
-                            <fileSets>
-                                <fileSet>
-                                    
<sourceFile>${project.build.directory}/build/thrift/config.h</sourceFile>
-                                    
<destinationFile>${project.build.directory}/thrift-${thrift.version}/lib/cpp/src/thrift/config.h</destinationFile>
-                                </fileSet>
-                            </fileSets>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
 </project>
diff --git a/compile-tools/thrift/src/assembly/compiler.xml 
b/compile-tools/thrift/src/assembly/compiler.xml
deleted file mode 100644
index a58798e..0000000
--- a/compile-tools/thrift/src/assembly/compiler.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-  -->
-<assembly>
-    <id>compiler-${os.classifier}</id>
-    <formats>
-        <format>zip</format>
-    </formats>
-    <includeBaseDirectory>false</includeBaseDirectory>
-    <fileSets>
-        <fileSet>
-            
<directory>${project.build.directory}/build/compiler/cpp/bin</directory>
-            <includes>
-                <include>*</include>
-            </includes>
-            <outputDirectory/>
-            <!-- Make sure the files are executable. -->
-            <fileMode>755</fileMode>
-        </fileSet>
-    </fileSets>
-</assembly>
diff --git a/compile-tools/thrift/src/assembly/cpp.xml 
b/compile-tools/thrift/src/assembly/cpp.xml
deleted file mode 100644
index 13acd18..0000000
--- a/compile-tools/thrift/src/assembly/cpp.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-  -->
-<assembly>
-    <id>cpp-${os.classifier}</id>
-    <formats>
-        <format>zip</format>
-    </formats>
-    <includeBaseDirectory>false</includeBaseDirectory>
-    <fileSets>
-        <fileSet>
-            
<directory>${project.build.directory}/thrift-${thrift.version}/lib/cpp/src</directory>
-            <includes>
-                <include>**/*.h</include>
-                <include>**/*.tcc</include>
-            </includes>
-            <outputDirectory>include</outputDirectory>
-        </fileSet>
-        <fileSet>
-            <directory>${project.build.directory}/build/thrift</directory>
-            <includes>
-                <include>**/*.h</include>
-            </includes>
-            <outputDirectory>include/thrift</outputDirectory>
-        </fileSet>
-        <fileSet>
-            <directory>${project.build.directory}/build/lib</directory>
-            <includes>
-                <include>*.a</include>
-                <include>*.dylib</include>
-            </includes>
-            <outputDirectory>lib</outputDirectory>
-        </fileSet>
-    </fileSets>
-</assembly>
diff --git a/compile-tools/thrift/src/assembly/python.xml 
b/compile-tools/thrift/src/assembly/python.xml
deleted file mode 100644
index 541aaea..0000000
--- a/compile-tools/thrift/src/assembly/python.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-  -->
-<assembly>
-    <id>python</id>
-    <formats>
-        <format>zip</format>
-    </formats>
-    <includeBaseDirectory>false</includeBaseDirectory>
-    <fileSets>
-        <fileSet>
-            
<directory>${project.build.directory}/thrift-${thrift.version}/lib/py/src</directory>
-            <includes>
-                <include>**</include>
-            </includes>
-            <excludes>
-                <exclude>ext/**</exclude>
-            </excludes>
-            <outputDirectory>thrift</outputDirectory>
-        </fileSet>
-    </fileSets>
-</assembly>
diff --git a/distribution/pom.xml b/distribution/pom.xml
index f97179a..8864d1c 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -29,6 +29,7 @@
     </parent>
     <artifactId>iotdb-distribution</artifactId>
     <name>IoTDB Distribution</name>
+    <modules/>
     <build>
         <plugins>
             <plugin>
@@ -38,14 +39,19 @@
                 <executions>
                     <!-- Package binaries-->
                     <execution>
-                        <id>binary-release-assembly</id>
+                        <id>all-bin</id>
                         <phase>package</phase>
                         <goals>
                             <goal>single</goal>
                         </goals>
                         <configuration>
                             <descriptors>
-                                
<descriptor>src/assembly/distribution.xml</descriptor>
+                                <descriptor>src/assembly/all.xml</descriptor>
+                                
<descriptor>src/assembly/server.xml</descriptor>
+                                
<descriptor>src/assembly/cluster.xml</descriptor>
+                                <descriptor>src/assembly/cli.xml</descriptor>
+                                
<descriptor>src/assembly/grafana.xml</descriptor>
+                                
<descriptor>src/assembly/client-cpp.xml</descriptor>
                             </descriptors>
                             
<finalName>apache-iotdb-${project.version}</finalName>
                         </configuration>
@@ -71,10 +77,16 @@
                                 <algorithm>SHA-512</algorithm>
                             </algorithms>
                             <fileSets>
+                                <!--bin-all-->
                                 <fileSet>
                                     
<directory>${project.build.directory}</directory>
                                     <includes>
-                                        
<include>apache-iotdb-${project.version}-bin.zip</include>
+                                        
<include>apache-iotdb-${project.version}-all-bin.zip</include>
+                                        
<include>apache-iotdb-${project.version}-server-bin.zip</include>
+                                        
<include>apache-iotdb-${project.version}-cli-bin.zip</include>
+                                        
<include>apache-iotdb-${project.version}-cluster-bin.zip</include>
+                                        
<include>apache-iotdb-${project.version}-grafana-bin.zip</include>
+                                        
<include>apache-iotdb-${project.version}-client-cpp-bin.zip</include>
                                     </includes>
                                 </fileSet>
                             </fileSets>
@@ -116,5 +128,18 @@
             <version>${project.version}</version>
             <type>war</type>
         </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>cluster</artifactId>
+            <version>${project.version}</version>
+            <type>zip</type>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>client-cpp</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <!--            <classifier>${os.classifier}</classifier>-->
+        </dependency>
     </dependencies>
 </project>
diff --git a/distribution/src/assembly/distribution.xml 
b/distribution/src/assembly/all.xml
similarity index 66%
copy from distribution/src/assembly/distribution.xml
copy to distribution/src/assembly/all.xml
index cdb6792..001ad75 100644
--- a/distribution/src/assembly/distribution.xml
+++ b/distribution/src/assembly/all.xml
@@ -20,23 +20,26 @@
 
 -->
 <assembly>
-    <id>bin</id>
+    <id>all-bin</id>
     <formats>
         <format>dir</format>
         <format>zip</format>
     </formats>
-    <includeBaseDirectory>true</includeBaseDirectory>
+    <baseDirectory>apache-iotdb-${project.version}-all-bin</baseDirectory>
     <dependencySets>
         <dependencySet>
             <includes>
-                <include>*:zip:*</include>
+                <include>*:iotdb-server:zip:*</include>
+                <include>*:iotdb-cli:zip:*</include>
+                <include>*:cluster:zip:*</include>
             </includes>
             <outputDirectory>${file.separator}</outputDirectory>
+            
<outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
             <unpack>true</unpack>
         </dependencySet>
         <dependencySet>
             <includes>
-                <include>*:iotdb-grafana:*</include>
+                <include>*:iotdb-grafana:war:*</include>
             </includes>
             <outputDirectory>tools/grafana/</outputDirectory>
             
<outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
@@ -44,6 +47,10 @@
         </dependencySet>
     </dependencySets>
     <fileSets>
+        <!--        <fileSet>-->
+        <!--            <outputDirectory>conf</outputDirectory>-->
+        <!--            
<directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/conf</directory>-->
+        <!--        </fileSet>-->
         <fileSet>
             <outputDirectory>sbin</outputDirectory>
             
<directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/sbin</directory>
@@ -60,8 +67,18 @@
             <fileMode>0755</fileMode>
         </fileSet>
         <fileSet>
-            
<directory>${maven.multiModuleProjectDirectory}/licenses</directory>
-            <outputDirectory>licenses</outputDirectory>
+            <outputDirectory>tools</outputDirectory>
+            
<directory>${maven.multiModuleProjectDirectory}/cli/src/assembly/resources/tools</directory>
+            <fileMode>0755</fileMode>
+        </fileSet>
+        <!--        <fileSet>-->
+        <!--            <outputDirectory>conf</outputDirectory>-->
+        <!--            
<directory>${maven.multiModuleProjectDirectory}/cluster/src/assembly/resources/conf</directory>-->
+        <!--        </fileSet>-->
+        <fileSet>
+            <outputDirectory>sbin</outputDirectory>
+            
<directory>${maven.multiModuleProjectDirectory}/cluster/src/assembly/resources/sbin</directory>
+            <fileMode>0755</fileMode>
         </fileSet>
         <fileSet>
             <directory>${maven.multiModuleProjectDirectory}/docs</directory>
@@ -70,30 +87,16 @@
     </fileSets>
     <files>
         <file>
+            
<source>${maven.multiModuleProjectDirectory}/grafana/src/main/resources/application.properties</source>
+            <destName>tools/grafana/application.properties</destName>
+        </file>
+        <file>
             
<source>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/conf/iotdb-env.sh</source>
             <destName>conf/iotdb-env.sh</destName>
             <fileMode>0755</fileMode>
         </file>
-        <file>
-            <source>${maven.multiModuleProjectDirectory}/README.md</source>
-        </file>
-        <file>
-            <source>${maven.multiModuleProjectDirectory}/README_ZH.md</source>
-        </file>
-        <file>
-            
<source>${maven.multiModuleProjectDirectory}/LICENSE-binary</source>
-            <destName>LICENSE</destName>
-        </file>
-        <file>
-            <source>${maven.multiModuleProjectDirectory}/NOTICE-binary</source>
-            <destName>NOTICE</destName>
-        </file>
-        <file>
-            
<source>${maven.multiModuleProjectDirectory}/RELEASE_NOTES.md</source>
-        </file>
-        <file>
-            
<source>${maven.multiModuleProjectDirectory}/grafana/src/main/resources/application.properties</source>
-            <destName>tools/grafana/application.properties</destName>
-        </file>
     </files>
+    <componentDescriptors>
+        <componentDescriptor>common-files.xml</componentDescriptor>
+    </componentDescriptors>
 </assembly>
diff --git a/distribution/src/assembly/cli.xml 
b/distribution/src/assembly/cli.xml
new file mode 100644
index 0000000..91d20bd
--- /dev/null
+++ b/distribution/src/assembly/cli.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<assembly>
+    <id>cli-bin</id>
+    <formats>
+        <format>dir</format>
+        <format>zip</format>
+    </formats>
+    <baseDirectory>apache-iotdb-${project.version}-cli-bin</baseDirectory>
+    <dependencySets>
+        <dependencySet>
+            <includes>
+                <include>*:iotdb-cli:zip</include>
+            </includes>
+            <outputDirectory>${file.separator}</outputDirectory>
+            
<outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
+            <unpack>true</unpack>
+        </dependencySet>
+    </dependencySets>
+    <fileSets>
+        <fileSet>
+            <outputDirectory>sbin</outputDirectory>
+            
<directory>${maven.multiModuleProjectDirectory}/cli/src/assembly/resources/sbin</directory>
+            <fileMode>0755</fileMode>
+        </fileSet>
+        <fileSet>
+            <outputDirectory>tools</outputDirectory>
+            
<directory>${maven.multiModuleProjectDirectory}/cli/src/assembly/resources/tools</directory>
+            <fileMode>0755</fileMode>
+        </fileSet>
+    </fileSets>
+    <componentDescriptors>
+        <componentDescriptor>common-files.xml</componentDescriptor>
+    </componentDescriptors>
+</assembly>
diff --git a/distribution/src/assembly/client-cpp.xml 
b/distribution/src/assembly/client-cpp.xml
new file mode 100644
index 0000000..22266e3
--- /dev/null
+++ b/distribution/src/assembly/client-cpp.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<assembly>
+    <id>client-cpp-${os.classifier}-bin</id>
+    <formats>
+        <format>dir</format>
+        <format>zip</format>
+    </formats>
+    
<baseDirectory>apache-iotdb-${project.version}-client-cpp-bin</baseDirectory>
+    <fileSets>
+        <fileSet>
+            
<directory>${maven.multiModuleProjectDirectory}/client-cpp/target/client-cpp-${project.version}-cpp-${os.classifier}</directory>
+            <outputDirectory>${file.separator}</outputDirectory>
+        </fileSet>
+    </fileSets>
+    <componentDescriptors>
+        <componentDescriptor>common-files.xml</componentDescriptor>
+    </componentDescriptors>
+</assembly>
diff --git a/distribution/src/assembly/distribution.xml 
b/distribution/src/assembly/cluster.xml
similarity index 57%
copy from distribution/src/assembly/distribution.xml
copy to distribution/src/assembly/cluster.xml
index cdb6792..534802e 100644
--- a/distribution/src/assembly/distribution.xml
+++ b/distribution/src/assembly/cluster.xml
@@ -20,52 +20,52 @@
 
 -->
 <assembly>
-    <id>bin</id>
+    <id>cluster-bin</id>
     <formats>
         <format>dir</format>
         <format>zip</format>
     </formats>
-    <includeBaseDirectory>true</includeBaseDirectory>
+    <baseDirectory>apache-iotdb-${project.version}-cluster-bin</baseDirectory>
     <dependencySets>
         <dependencySet>
             <includes>
-                <include>*:zip:*</include>
+                <include>*:cluster:zip:*</include>
+                <include>*:iotdb-cli:zip:*</include>
             </includes>
             <outputDirectory>${file.separator}</outputDirectory>
-            <unpack>true</unpack>
-        </dependencySet>
-        <dependencySet>
-            <includes>
-                <include>*:iotdb-grafana:*</include>
-            </includes>
-            <outputDirectory>tools/grafana/</outputDirectory>
             
<outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
-            <unpack>false</unpack>
+            <unpack>true</unpack>
         </dependencySet>
     </dependencySets>
     <fileSets>
+        <!--        <fileSet>-->
+        <!--            
<directory>${maven.multiModuleProjectDirectory}/cluster/src/assembly/resources/conf</directory>-->
+        <!--            <outputDirectory>conf</outputDirectory>-->
+        <!--        </fileSet>-->
         <fileSet>
+            
<directory>${maven.multiModuleProjectDirectory}/cluster/src/assembly/resources/sbin</directory>
             <outputDirectory>sbin</outputDirectory>
-            
<directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/sbin</directory>
             <fileMode>0755</fileMode>
         </fileSet>
+        <!--        <fileSet>-->
+        <!--            
<directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/conf</directory>-->
+        <!--            <outputDirectory>conf</outputDirectory>-->
+        <!--        </fileSet>-->
         <fileSet>
-            <outputDirectory>tools</outputDirectory>
             
<directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/tools</directory>
+            <outputDirectory>tools</outputDirectory>
             <fileMode>0755</fileMode>
         </fileSet>
+        <!--end-->
         <fileSet>
-            <outputDirectory>sbin</outputDirectory>
             
<directory>${maven.multiModuleProjectDirectory}/cli/src/assembly/resources/sbin</directory>
+            <outputDirectory>sbin</outputDirectory>
             <fileMode>0755</fileMode>
         </fileSet>
         <fileSet>
-            
<directory>${maven.multiModuleProjectDirectory}/licenses</directory>
-            <outputDirectory>licenses</outputDirectory>
-        </fileSet>
-        <fileSet>
-            <directory>${maven.multiModuleProjectDirectory}/docs</directory>
-            <outputDirectory>docs</outputDirectory>
+            
<directory>${maven.multiModuleProjectDirectory}/cli/src/assembly/resources/tools</directory>
+            <outputDirectory>tools</outputDirectory>
+            <fileMode>0755</fileMode>
         </fileSet>
     </fileSets>
     <files>
@@ -74,26 +74,8 @@
             <destName>conf/iotdb-env.sh</destName>
             <fileMode>0755</fileMode>
         </file>
-        <file>
-            <source>${maven.multiModuleProjectDirectory}/README.md</source>
-        </file>
-        <file>
-            <source>${maven.multiModuleProjectDirectory}/README_ZH.md</source>
-        </file>
-        <file>
-            
<source>${maven.multiModuleProjectDirectory}/LICENSE-binary</source>
-            <destName>LICENSE</destName>
-        </file>
-        <file>
-            <source>${maven.multiModuleProjectDirectory}/NOTICE-binary</source>
-            <destName>NOTICE</destName>
-        </file>
-        <file>
-            
<source>${maven.multiModuleProjectDirectory}/RELEASE_NOTES.md</source>
-        </file>
-        <file>
-            
<source>${maven.multiModuleProjectDirectory}/grafana/src/main/resources/application.properties</source>
-            <destName>tools/grafana/application.properties</destName>
-        </file>
     </files>
+    <componentDescriptors>
+        <componentDescriptor>common-files.xml</componentDescriptor>
+    </componentDescriptors>
 </assembly>
diff --git a/distribution/src/assembly/common-files.xml 
b/distribution/src/assembly/common-files.xml
new file mode 100644
index 0000000..4befd2a
--- /dev/null
+++ b/distribution/src/assembly/common-files.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<component xmlns="http://maven.apache.org/ASSEMBLY-COMPONENT/2.1.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY-COMPONENT/2.1.0 
http://maven.apache.org/xsd/assembly-component-2.1.0.xsd";>
+    <fileSets>
+        <fileSet>
+            
<directory>${maven.multiModuleProjectDirectory}/licenses</directory>
+            <outputDirectory>licenses</outputDirectory>
+        </fileSet>
+    </fileSets>
+    <files>
+        <file>
+            <source>${maven.multiModuleProjectDirectory}/README.md</source>
+        </file>
+        <file>
+            <source>${maven.multiModuleProjectDirectory}/README_ZH.md</source>
+        </file>
+        <file>
+            
<source>${maven.multiModuleProjectDirectory}/LICENSE-binary</source>
+            <destName>LICENSE</destName>
+        </file>
+        <file>
+            <source>${maven.multiModuleProjectDirectory}/NOTICE-binary</source>
+            <destName>NOTICE</destName>
+        </file>
+        <file>
+            
<source>${maven.multiModuleProjectDirectory}/RELEASE_NOTES.md</source>
+        </file>
+    </files>
+</component>
diff --git a/distribution/src/assembly/grafana.xml 
b/distribution/src/assembly/grafana.xml
new file mode 100644
index 0000000..28bdf3e
--- /dev/null
+++ b/distribution/src/assembly/grafana.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<assembly>
+    <id>grafana-bin</id>
+    <formats>
+        <format>dir</format>
+        <format>zip</format>
+    </formats>
+    <baseDirectory>apache-iotdb-${project.version}-grafana-bin</baseDirectory>
+    <dependencySets>
+        <dependencySet>
+            <includes>
+                <include>*:iotdb-grafana:war:*</include>
+            </includes>
+            <outputDirectory>${file.separator}</outputDirectory>
+            
<outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
+            <unpack>false</unpack>
+        </dependencySet>
+    </dependencySets>
+    <files>
+        <file>
+            
<source>${maven.multiModuleProjectDirectory}/grafana/src/main/resources/application.properties</source>
+            <destName>application.properties</destName>
+        </file>
+    </files>
+    <componentDescriptors>
+        <componentDescriptor>common-files.xml</componentDescriptor>
+    </componentDescriptors>
+</assembly>
diff --git a/distribution/src/assembly/distribution.xml 
b/distribution/src/assembly/server.xml
similarity index 65%
rename from distribution/src/assembly/distribution.xml
rename to distribution/src/assembly/server.xml
index cdb6792..28065c3 100644
--- a/distribution/src/assembly/distribution.xml
+++ b/distribution/src/assembly/server.xml
@@ -20,30 +20,28 @@
 
 -->
 <assembly>
-    <id>bin</id>
+    <id>server-bin</id>
     <formats>
         <format>dir</format>
         <format>zip</format>
     </formats>
-    <includeBaseDirectory>true</includeBaseDirectory>
+    <baseDirectory>apache-iotdb-${project.version}-server-bin</baseDirectory>
     <dependencySets>
         <dependencySet>
             <includes>
-                <include>*:zip:*</include>
+                <include>*:iotdb-server:zip:*</include>
+                <include>*:iotdb-cli:zip:*</include>
             </includes>
             <outputDirectory>${file.separator}</outputDirectory>
-            <unpack>true</unpack>
-        </dependencySet>
-        <dependencySet>
-            <includes>
-                <include>*:iotdb-grafana:*</include>
-            </includes>
-            <outputDirectory>tools/grafana/</outputDirectory>
             
<outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
-            <unpack>false</unpack>
+            <unpack>true</unpack>
         </dependencySet>
     </dependencySets>
     <fileSets>
+        <!--        <fileSet>-->
+        <!--            <outputDirectory>conf</outputDirectory>-->
+        <!--            
<directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/conf</directory>-->
+        <!--        </fileSet>-->
         <fileSet>
             <outputDirectory>sbin</outputDirectory>
             
<directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/sbin</directory>
@@ -60,8 +58,9 @@
             <fileMode>0755</fileMode>
         </fileSet>
         <fileSet>
-            
<directory>${maven.multiModuleProjectDirectory}/licenses</directory>
-            <outputDirectory>licenses</outputDirectory>
+            <outputDirectory>tools</outputDirectory>
+            
<directory>${maven.multiModuleProjectDirectory}/cli/src/assembly/resources/tools</directory>
+            <fileMode>0755</fileMode>
         </fileSet>
         <fileSet>
             <directory>${maven.multiModuleProjectDirectory}/docs</directory>
@@ -74,26 +73,8 @@
             <destName>conf/iotdb-env.sh</destName>
             <fileMode>0755</fileMode>
         </file>
-        <file>
-            <source>${maven.multiModuleProjectDirectory}/README.md</source>
-        </file>
-        <file>
-            <source>${maven.multiModuleProjectDirectory}/README_ZH.md</source>
-        </file>
-        <file>
-            
<source>${maven.multiModuleProjectDirectory}/LICENSE-binary</source>
-            <destName>LICENSE</destName>
-        </file>
-        <file>
-            <source>${maven.multiModuleProjectDirectory}/NOTICE-binary</source>
-            <destName>NOTICE</destName>
-        </file>
-        <file>
-            
<source>${maven.multiModuleProjectDirectory}/RELEASE_NOTES.md</source>
-        </file>
-        <file>
-            
<source>${maven.multiModuleProjectDirectory}/grafana/src/main/resources/application.properties</source>
-            <destName>tools/grafana/application.properties</destName>
-        </file>
     </files>
+    <componentDescriptors>
+        <componentDescriptor>common-files.xml</componentDescriptor>
+    </componentDescriptors>
 </assembly>
diff --git a/docker/src/main/Dockerfile b/docker/src/main/Dockerfile
index d8ced28..402227c 100644
--- a/docker/src/main/Dockerfile
+++ b/docker/src/main/Dockerfile
@@ -21,7 +21,7 @@
 
 FROM openjdk:11-jre-slim
 
-ADD distribution/target/apache-iotdb-*-bin.zip /
+ADD distribution/target/apache-iotdb-*-all-bin.zip /
 
 RUN apt update \
   && apt install lsof procps unzip -y \
diff --git a/example/client-cpp-example/pom.xml 
b/example/client-cpp-example/pom.xml
index 10a2734..528c701 100644
--- a/example/client-cpp-example/pom.xml
+++ b/example/client-cpp-example/pom.xml
@@ -23,12 +23,16 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.iotdb</groupId>
-        <artifactId>client-cpp</artifactId>
+        <artifactId>iotdb-examples</artifactId>
         <version>0.12.0-SNAPSHOT</version>
-        <relativePath>../../client-cpp/pom.xml</relativePath>
+        <relativePath>../pom.xml</relativePath>
     </parent>
     <artifactId>client-cpp-example</artifactId>
     <name>IoTDB-Client CPP Examples</name>
+    <properties>
+        <cmake-version>3.17.3</cmake-version>
+        <cmake.build.type>Release</cmake.build.type>
+    </properties>
     <profiles>
         <profile>
             <id>os-unix</id>
@@ -38,6 +42,7 @@
                 </os>
             </activation>
             <properties>
+                <cmake.generator>Unix Makefiles</cmake.generator>
                 
<cmake.root.dir>${project.parent.basedir}/../compile-tools/thrift/target/cmake-${cmake-version}-Linux-x86_64/</cmake.root.dir>
             </properties>
         </profile>
@@ -49,6 +54,7 @@
                 </os>
             </activation>
             <properties>
+                <cmake.generator>Unix Makefiles</cmake.generator>
                 
<cmake.root.dir>${project.parent.basedir}/../compile-tools/thrift/target/cmake-${cmake-version}-Darwin-x86_64/CMake.app/Contents</cmake.root.dir>
                 <boost.include.dir>/usr/local/include</boost.include.dir>
             </properties>
@@ -61,105 +67,117 @@
                 </os>
             </activation>
             <properties>
+                <cmake.generator>Visual Studio 16 2019</cmake.generator>
                 
<cmake.root.dir>${project.parent.basedir}/../compile-tools/thrift/target/cmake-${cmake-version}-win64-x64/</cmake.root.dir>
                 <boost.include.dir/>
             </properties>
         </profile>
+        <profile>
+            <id>compile-cpp</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>com.coderplus.maven.plugins</groupId>
+                        <artifactId>copy-rename-maven-plugin</artifactId>
+                        <version>1.0</version>
+                        <executions>
+                            <execution>
+                                <id>copy-thrift-source</id>
+                                <goals>
+                                    <goal>copy</goal>
+                                </goals>
+                                <configuration>
+                                    <fileSets>
+                                        <fileSet>
+                                            
<sourceFile>${project.basedir}/src/SessionExample.cpp</sourceFile>
+                                            
<destinationFile>${project.build.directory}/SessionExample.cpp</destinationFile>
+                                        </fileSet>
+                                        <fileSet>
+                                            
<sourceFile>${project.basedir}/src/CMakeLists.txt</sourceFile>
+                                            
<destinationFile>${project.build.directory}/CMakeLists.txt</destinationFile>
+                                        </fileSet>
+                                        <fileSet>
+                                            
<sourceFile>${project.parent.basedir}/../client-cpp/target/client-cpp-${project.version}-cpp-${os.classifier}.zip</sourceFile>
+                                            
<destinationFile>${project.build.directory}/client-cpp-${project.version}-cpp-${os.classifier}.zip</destinationFile>
+                                        </fileSet>
+                                    </fileSets>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>unpack-client</id>
+                                <goals>
+                                    <goal>unpack</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>org.apache.iotdb</groupId>
+                                            <artifactId>client-cpp</artifactId>
+                                            
<version>${project.version}</version>
+                                            <type>zip</type>
+                                            
<classifier>cpp-${os.classifier}</classifier>
+                                            <overWrite>true</overWrite>
+                                        </artifactItem>
+                                    </artifactItems>
+                                    
<outputDirectory>${project.build.directory}/client</outputDirectory>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>com.googlecode.cmake-maven-project</groupId>
+                        <artifactId>cmake-maven-plugin</artifactId>
+                        <version>3.7.2-b1</version>
+                        <executions>
+                            <execution>
+                                <id>cmake-generate</id>
+                                <phase>compile</phase>
+                                <goals>
+                                    <goal>generate</goal>
+                                </goals>
+                                <configuration>
+                                    <classifier>${os.classifier}</classifier>
+                                    <downloadBinaries>false</downloadBinaries>
+                                    
<sourcePath>${project.build.directory}</sourcePath>
+                                    
<targetPath>${project.build.directory}</targetPath>
+                                    <generator>${cmake.generator}</generator>
+                                    <options>
+                                        
<option>-DBOOST_INCLUDEDIR=${boost.include.dir}</option>
+                                    </options>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>cmake-compile</id>
+                                <phase>compile</phase>
+                                <goals>
+                                    <goal>compile</goal>
+                                </goals>
+                                <configuration>
+                                    <classifier>${os.classifier}</classifier>
+                                    <config>${cmake.build.type}</config>
+                                    <downloadBinaries>false</downloadBinaries>
+                                    <!-- The directory where the "generate" 
step generated the build configuration -->
+                                    
<projectDirectory>${project.build.directory}</projectDirectory>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
     </profiles>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>com.coderplus.maven.plugins</groupId>
-                <artifactId>copy-rename-maven-plugin</artifactId>
-                <version>1.0</version>
-                <executions>
-                    <execution>
-                        <id>copy-thrift-source</id>
-                        <goals>
-                            <goal>copy</goal>
-                        </goals>
-                        <configuration>
-                            <fileSets>
-                                <fileSet>
-                                    
<sourceFile>${project.basedir}/src/SessionExample.cpp</sourceFile>
-                                    
<destinationFile>${project.build.directory}/SessionExample.cpp</destinationFile>
-                                </fileSet>
-                                <fileSet>
-                                    
<sourceFile>${project.basedir}/src/CMakeLists.txt</sourceFile>
-                                    
<destinationFile>${project.build.directory}/CMakeLists.txt</destinationFile>
-                                </fileSet>
-                                <fileSet>
-                                    
<sourceFile>${project.parent.basedir}/target/client-cpp-${project.version}-cpp-${os.classifier}.zip</sourceFile>
-                                    
<destinationFile>${project.build.directory}/client-cpp-${project.version}-cpp-${os.classifier}.zip</destinationFile>
-                                </fileSet>
-                            </fileSets>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>unpack-client</id>
-                        <goals>
-                            <goal>unpack</goal>
-                        </goals>
-                        <configuration>
-                            <artifactItems>
-                                <artifactItem>
-                                    <groupId>org.apache.iotdb</groupId>
-                                    <artifactId>client-cpp</artifactId>
-                                    <version>${project.version}</version>
-                                    <type>zip</type>
-                                    
<classifier>cpp-${os.classifier}</classifier>
-                                    <overWrite>true</overWrite>
-                                </artifactItem>
-                            </artifactItems>
-                            
<outputDirectory>${project.build.directory}/client</outputDirectory>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>com.googlecode.cmake-maven-project</groupId>
-                <artifactId>cmake-maven-plugin</artifactId>
-                <version>3.7.2-b1</version>
-                <executions>
-                    <execution>
-                        <id>cmake-generate</id>
-                        <phase>compile</phase>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <configuration>
-                            <classifier>${os.classifier}</classifier>
-                            <downloadBinaries>false</downloadBinaries>
-                            <sourcePath>${project.build.directory}</sourcePath>
-                            <targetPath>${project.build.directory}</targetPath>
-                            <generator>${cmake.generator}</generator>
-                            <options>
-                                
<option>-DBOOST_INCLUDEDIR=${boost.include.dir}</option>
-                            </options>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>cmake-compile</id>
-                        <phase>compile</phase>
-                        <goals>
-                            <goal>compile</goal>
-                        </goals>
-                        <configuration>
-                            <classifier>${os.classifier}</classifier>
-                            <config>${cmake.build.type}</config>
-                            <downloadBinaries>false</downloadBinaries>
-                            <!-- The directory where the "generate" step 
generated the build configuration -->
-                            
<projectDirectory>${project.build.directory}</projectDirectory>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.iotdb</groupId>
+            <artifactId>client-cpp</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/pom.xml b/pom.xml
index 64e407e..9e30952 100644
--- a/pom.xml
+++ b/pom.xml
@@ -100,6 +100,8 @@
         <module>cross-tests</module>
         <module>zeppelin-interpreter</module>
         <module>client-py</module>
+        <module>compile-tools</module>
+        <module>client-cpp</module>
     </modules>
     <!-- Properties Management -->
     <properties>
@@ -934,6 +936,7 @@
                 </os>
             </activation>
             <properties>
+                <os.classifier>windows-x86_64</os.classifier>
                 
<thrift.download-url>http://artfiles.org/apache.org/thrift/${thrift.version}/thrift-${thrift.version}.exe</thrift.download-url>
                 
<thrift.executable>thrift-${thrift.version}-win-x86_64.exe</thrift.executable>
                 
<thrift.skip-making-executable>true</thrift.skip-making-executable>
@@ -950,6 +953,7 @@
                 </os>
             </activation>
             <properties>
+                <os.classifier>linux-x86_64</os.classifier>
                 
<thrift.download-url>https://github.com/jt2594838/mvn-thrift-compiler/raw/master/thrift_0.12.0_0.13.0_linux.exe</thrift.download-url>
                 
<thrift.executable>thrift_0.12.0_0.13.0_linux.exe</thrift.executable>
                 
<thrift.skip-making-executable>false</thrift.skip-making-executable>
@@ -965,6 +969,7 @@
                 </os>
             </activation>
             <properties>
+                <os.classifier>mac-x86_64</os.classifier>
                 
<thrift.download-url>https://github.com/jt2594838/mvn-thrift-compiler/raw/master/thrift_0.12.0_0.13.0_mac.exe</thrift.download-url>
                 
<thrift.executable>thrift_0.12.0_0.13.0_mac.exe</thrift.executable>
                 
<thrift.skip-making-executable>false</thrift.skip-making-executable>
@@ -1100,19 +1105,6 @@
                                     
<outputDirectory>${project.build.directory}/generated-sources-go</outputDirectory>
                                 </configuration>
                             </execution>
-                            <execution>
-                                <id>generate-thrift-sources-cpp</id>
-                                <phase>generate-sources</phase>
-                                <goals>
-                                    <goal>compile</goal>
-                                </goals>
-                                <configuration>
-                                    <generator>cpp</generator>
-                                    
<thriftExecutable>${thrift.exec.absolute.path}</thriftExecutable>
-                                    
<thriftSourceRoot>${basedir}/src/main/thrift</thriftSourceRoot>
-                                    
<outputDirectory>${project.build.directory}/generated-sources-cpp</outputDirectory>
-                                </configuration>
-                            </execution>
                         </executions>
                     </plugin>
                 </plugins>
@@ -1192,17 +1184,6 @@
                 <module>site</module>
             </modules>
         </profile>
-        <profile>
-            <id>client-cpp</id>
-            <!-- we set client-cpp as true to enable the client-cpp-example-->
-            <properties>
-                <client-cpp>true</client-cpp>
-            </properties>
-            <modules>
-                <module>compile-tools</module>
-                <module>client-cpp</module>
-            </modules>
-        </profile>
         <!-- code coverage for ut and it, and then merge them together.-->
         <profile>
             <id>code-coverage</id>

Reply via email to