refact: prepare for integrating store modules
diff --git a/.github/workflows/pd-store.yml b/.github/workflows/pd-store.yml
index 65fb3cc..7c45e0f 100644
--- a/.github/workflows/pd-store.yml
+++ b/.github/workflows/pd-store.yml
@@ -49,3 +49,45 @@
         uses: codecov/codecov-action@v3.0.0
         with:
           file: ${{ env.REPORT_DIR }}/*.xml
+
+  store:
+    # TODO: avoid duplicated env setup
+    runs-on: ubuntu-latest
+    env:
+      USE_STAGE: 'true' # Whether to include the stage repository.
+      TRAVIS_DIR: hugegraph-server/hugegraph-dist/src/assembly/travis
+      REPORT_DIR: target/site/jacoco
+
+    steps:
+      - name: Install JDK 11
+        uses: actions/setup-java@v3
+        with:
+          java-version: '11'
+          distribution: 'zulu'
+
+      - name: Cache Maven packages
+        uses: actions/cache@v3
+        with:
+          path: ~/.m2
+          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+          restore-keys: ${{ runner.os }}-m2
+
+      - name: Checkout
+        uses: actions/checkout@v3
+        with:
+          fetch-depth: 2
+
+      - name: use staged maven repo settings
+        if: ${{ env.USE_STAGE == 'true' }}
+        run: |
+          cp $HOME/.m2/settings.xml /tmp/settings.xml
+          mv -vf .github/configs/settings.xml $HOME/.m2/settings.xml
+
+      - name: Run common test
+        run: |
+          mvn test -pl hugegraph-store/hg-store-test -am -P store-common-test
+
+      - name: Upload coverage to Codecov
+        uses: codecov/codecov-action@v3.0.0
+        with:
+          file: ${{ env.REPORT_DIR }}/*.xml
diff --git a/hugegraph-store/.gitignore b/hugegraph-store/.gitignore
new file mode 100644
index 0000000..afb9ae8
--- /dev/null
+++ b/hugegraph-store/.gitignore
@@ -0,0 +1,2 @@
+# Exclude the generated PB files
+hg-store-grpc/src/main/java/
diff --git a/hugegraph-store/README.md b/hugegraph-store/README.md
index bef8b53..cd2dedb 100644
--- a/hugegraph-store/README.md
+++ b/hugegraph-store/README.md
@@ -1,5 +1,8 @@
-# HugeGraph Store
+> Note: From revision 1.5.0, the code of HugeGraph-Store will be adapted to this location (WIP).
 
-HugeGraph Store is a new built-in storage backend, which uses RocksDB as the distributed backend storage engine.
+# HugeGraph Store (BETA)
 
-> Note: Currently, the contents of this folder are empty. Starting from revision 1.5.0, the code of HugeGraph Store will be adapted to this location (WIP).
+HugeGraph Store is a new built-in storage backend, which uses RocksDB as the distributed backend
+storage engine.
+
+> BTW, if you meet any problem when using HugeGraph Store, please feel free to contact us for help
diff --git a/hugegraph-store/pom.xml b/hugegraph-store/pom.xml
new file mode 100644
index 0000000..0bb8cd9
--- /dev/null
+++ b/hugegraph-store/pom.xml
@@ -0,0 +1,317 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>hugegraph-store</artifactId>
+    <version>${revision}</version>
+    <packaging>pom</packaging>
+
+    <parent>
+        <groupId>org.apache.hugegraph</groupId>
+        <artifactId>hugegraph</artifactId>
+        <version>${revision}</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <modules>
+        <module>hg-store-common</module>
+        <module>hg-store-grpc</module>
+        <module>hg-store-client</module>
+        <module>hg-store-test</module>
+        <!--        TODO: uncomment later-->
+        <!--        <module>hg-store-rocksdb</module>-->
+        <!--        <module>hg-store-core</module>-->
+        <!--        <module>hg-store-node</module>-->
+        <!--        <module>hg-store-dist</module>-->
+        <!--        <module>hg-store-cli</module>-->
+    </modules>
+
+    <properties>
+        <hugegraph.core.version>1.5.0</hugegraph.core.version>
+        <maven.compiler.source>11</maven.compiler.source>
+        <maven.compiler.target>11</maven.compiler.target>
+        <log4j2.version>2.15.0</log4j2.version>
+        <top.level.dir>${project.basedir}/..</top.level.dir>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <!--        TODO: uncomment later-->
+            <dependency>
+                <groupId>org.apache.hugegraph</groupId>
+                <artifactId>hg-store-common</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.hugegraph</groupId>
+                <artifactId>hg-store-grpc</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <!--            <dependency>-->
+            <!--                <groupId>org.apache.hugegraph</groupId>-->
+            <!--                <artifactId>hg-store-rocksdb</artifactId>-->
+            <!--                <version>${project.version}</version>-->
+            <!--            </dependency>-->
+            <dependency>
+                <groupId>org.apache.hugegraph</groupId>
+                <artifactId>hg-store-client</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <!--            <dependency>-->
+            <!--                <groupId>org.apache.hugegraph</groupId>-->
+            <!--                <artifactId>hg-store-core</artifactId>-->
+            <!--                <version>${project.version}</version>-->
+            <!--            </dependency>-->
+            <!--            <dependency>-->
+            <!--                <groupId>org.apache.hugegraph</groupId>-->
+            <!--                <artifactId>hg-store-transfer</artifactId>-->
+            <!--                <version>${project.version}</version>-->
+            <!--            </dependency>-->
+            <dependency>
+                <groupId>org.apache.logging.log4j</groupId>
+                <artifactId>log4j-slf4j-impl</artifactId>
+                <version>2.15.0</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.13.2</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.jacoco</groupId>
+                <artifactId>jacoco-maven-plugin</artifactId>
+                <version>0.8.4</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>prepare-agent</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>flatten-maven-plugin</artifactId>
+                <version>1.2.7</version>
+                <configuration>
+                    <updatePomFile>true</updatePomFile>
+                    <flattenMode>resolveCiFriendliesOnly</flattenMode>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>flatten</id>
+                        <phase>process-resources</phase>
+                        <goals>
+                            <goal>flatten</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>flatten.clean</id>
+                        <phase>clean</phase>
+                        <goals>
+                            <goal>clean</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-clean-plugin</artifactId>
+                <configuration>
+                    <filesets>
+                        <fileset>
+                            <directory>${project.basedir}/</directory>
+                            <includes>
+                                <include>*.tar</include>
+                                <include>*.tar.gz</include>
+                                <include>.flattened-pom.xml</include>
+                                <!-- WARN: delete dist dir may influence dev? -->
+                                <include>dist/**</include>
+                            </includes>
+                            <followSymlinks>false</followSymlinks>
+                        </fileset>
+                        <!-- <fileset><directory>${final.name}</directory></fileset> -->
+                    </filesets>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <profiles>
+        <!--        TODO: uncomment later-->
+        <!-- hugegraph store test profiles -->
+        <!--        <profile>-->
+        <!--            <id>store-client-test</id>-->
+        <!--            <activation>-->
+        <!--                <activeByDefault>true</activeByDefault>-->
+        <!--            </activation>-->
+        <!--            <build>-->
+        <!--                <plugins>-->
+        <!--                    <plugin>-->
+        <!--                        <groupId>org.apache.maven.plugins</groupId>-->
+        <!--                        <artifactId>maven-surefire-plugin</artifactId>-->
+        <!--                        <version>2.20</version>-->
+        <!--                        <executions>-->
+        <!--                            <execution>-->
+        <!--                                <id>store-client-test</id>-->
+        <!--                                <goals>-->
+        <!--                                    <goal>test</goal>-->
+        <!--                                </goals>-->
+        <!--                                <phase>test</phase>-->
+        <!--                            </execution>-->
+        <!--                        </executions>-->
+        <!--                    </plugin>-->
+        <!--                </plugins>-->
+        <!--            </build>-->
+        <!--        </profile>-->
+        <!--        <profile>-->
+        <!--            <id>store-core-test</id>-->
+        <!--            <activation>-->
+        <!--                <activeByDefault>true</activeByDefault>-->
+        <!--            </activation>-->
+        <!--            <build>-->
+        <!--                <plugins>-->
+        <!--                    <plugin>-->
+        <!--                        <groupId>org.apache.maven.plugins</groupId>-->
+        <!--                        <artifactId>maven-surefire-plugin</artifactId>-->
+        <!--                        <version>2.20</version>-->
+        <!--                        <executions>-->
+        <!--                            <execution>-->
+        <!--                                <id>store-core-test</id>-->
+        <!--                                <goals>-->
+        <!--                                    <goal>test</goal>-->
+        <!--                                </goals>-->
+        <!--                                <phase>test</phase>-->
+        <!--                            </execution>-->
+        <!--                        </executions>-->
+        <!--                    </plugin>-->
+        <!--                </plugins>-->
+        <!--            </build>-->
+        <!--        </profile>-->
+        <profile>
+            <id>store-common-test</id>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <version>2.20</version>
+                        <executions>
+                            <execution>
+                                <id>store-common-test</id>
+                                <goals>
+                                    <goal>test</goal>
+                                </goals>
+                                <phase>test</phase>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <!--        <profile>-->
+        <!--            <id>store-rocksdb-test</id>-->
+        <!--            <activation>-->
+        <!--                <activeByDefault>true</activeByDefault>-->
+        <!--            </activation>-->
+        <!--            <build>-->
+        <!--                <plugins>-->
+        <!--                    <plugin>-->
+        <!--                        <groupId>org.apache.maven.plugins</groupId>-->
+        <!--                        <artifactId>maven-surefire-plugin</artifactId>-->
+        <!--                        <version>2.20</version>-->
+        <!--                        <executions>-->
+        <!--                            <execution>-->
+        <!--                                <id>store-rocksdb-test</id>-->
+        <!--                                <goals>-->
+        <!--                                    <goal>test</goal>-->
+        <!--                                </goals>-->
+        <!--                                <phase>test</phase>-->
+        <!--                            </execution>-->
+        <!--                        </executions>-->
+        <!--                    </plugin>-->
+        <!--                </plugins>-->
+        <!--            </build>-->
+        <!--        </profile>-->
+        <!--        <profile>-->
+        <!--            <id>store-server-test</id>-->
+        <!--            <activation>-->
+        <!--                <activeByDefault>true</activeByDefault>-->
+        <!--            </activation>-->
+        <!--            <build>-->
+        <!--                <plugins>-->
+        <!--                    <plugin>-->
+        <!--                        <groupId>org.apache.maven.plugins</groupId>-->
+        <!--                        <artifactId>maven-surefire-plugin</artifactId>-->
+        <!--                        <version>2.20</version>-->
+        <!--                        <executions>-->
+        <!--                            <execution>-->
+        <!--                                <id>store-server-test</id>-->
+        <!--                                <goals>-->
+        <!--                                    <goal>test</goal>-->
+        <!--                                </goals>-->
+        <!--                                <phase>test</phase>-->
+        <!--                            </execution>-->
+        <!--                        </executions>-->
+        <!--                    </plugin>-->
+        <!--                </plugins>-->
+        <!--            </build>-->
+        <!--        </profile>-->
+        <!--        <profile>-->
+        <!--            <id>store-raftcore-test</id>-->
+        <!--            <activation>-->
+        <!--                <activeByDefault>true</activeByDefault>-->
+        <!--            </activation>-->
+        <!--            <build>-->
+        <!--                <plugins>-->
+        <!--                    <plugin>-->
+        <!--                        <groupId>org.apache.maven.plugins</groupId>-->
+        <!--                        <artifactId>maven-surefire-plugin</artifactId>-->
+        <!--                        <version>2.20</version>-->
+        <!--                        <executions>-->
+        <!--                            <execution>-->
+        <!--                                <id>store-raftcore-test</id>-->
+        <!--                                <goals>-->
+        <!--                                    <goal>test</goal>-->
+        <!--                                </goals>-->
+        <!--                                <phase>test</phase>-->
+        <!--                            </execution>-->
+        <!--                        </executions>-->
+        <!--                    </plugin>-->
+        <!--                </plugins>-->
+        <!--            </build>-->
+        <!--        </profile>-->
+    </profiles>
+</project>
diff --git a/pom.xml b/pom.xml
index ff448ff..273270f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -92,8 +92,7 @@
     <modules>
         <module>hugegraph-server</module>
         <module>hugegraph-pd</module>
-        <!-- TODO: uncomment when merge into store -->
-        <!-- <module>hugegraph-store</module> -->
+        <module>hugegraph-store</module>
     </modules>
 
     <build>
@@ -177,8 +176,11 @@
                             <exclude>**/hbase-*/**</exclude>
                             <exclude>**/apache-cassandra-*/**</exclude>
                             <exclude>**/pid</exclude>
+                            <!-- tmp files generated by store -->
+                            <exclude>**/tmp/**</exclude>
                             <!-- sources generated by gRPC -->
                             <exclude>**/src/main/java/org/apache/hugegraph/pd/grpc/**</exclude>
+                            <exclude>**/src/main/java/org/apache/hugegraph/store/grpc/**</exclude>
                         </excludes>
                         <consoleOutput>true</consoleOutput>
                     </configuration>