You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by vi...@apache.org on 2019/03/07 12:36:14 UTC

[incubator-dubbo-samples] branch 2.6.x updated: refactor project : reduce parent and son dependency

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

victory pushed a commit to branch 2.6.x
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-samples.git


The following commit(s) were added to refs/heads/2.6.x by this push:
     new d4c6016  refactor project : reduce parent and son dependency
d4c6016 is described below

commit d4c60162e1e4423e0adef7b06fce64b5767f51c5
Author: cvictory <sh...@gmail.com>
AuthorDate: Thu Mar 7 20:35:44 2019 +0800

    refactor project : reduce parent and son dependency
---
 dubbo-samples-annotation/README.md                 |   8 +-
 dubbo-samples-annotation/pom.xml                   | 243 ++++++++++++++++++++-
 ...strap.java => AnnotationConsumerBootstrap.java} |  11 +-
 ...strap.java => AnnotationProviderBootstrap.java} |   6 +-
 .../action/AnnotationHelloServiceConsumer.java}    |  13 +-
 .../{ => annotation}/config/ConsumerBootstrap.java |  13 +-
 .../{ => annotation}/config/ProviderBootstrap.java |   7 +-
 .../impl/AnnotationHelloServiceImpl.java           |   7 +-
 .../support/EmbeddedZooKeeper.java                 |   4 +-
 .../apache/dubbo/samples/api/GreetingService.java  |  26 ---
 .../README.md                                      |   8 +-
 pom.xml => dubbo-samples-api-client/pom.xml        | 139 +-----------
 .../dubbo/samples/api/client/HelloService.java     |   4 +-
 .../src/main/resources/log4j.properties            |  10 +-
 .../resources/spring/dubbo-consumer.properties     |   6 +-
 .../resources/spring/dubbo-provider.properties     |   6 +-
 .../README.md                                      |   4 +-
 pom.xml => dubbo-samples-api-invoker/pom.xml       |  64 +++---
 .../api/invoker/ApiInvokerConsumerBootstrap.java   |  16 +-
 .../api/invoker/ApiInvokerProviderBootstrap.java   |  15 +-
 .../api/invoker/impl/ApiHelloServiceImpl.java      |   6 +-
 dubbo-samples-api/pom.xml                          |  47 ----
 .../apache/dubbo/samples/api/GreetingsService.java |  23 --
 dubbo-samples-async/pom.xml                        | 237 +++++++++++++++++++-
 ...ncConsumer.java => AsyncConsumerBootstrap.java} |   2 +-
 ...ncProvider.java => AsyncProviderBootstrap.java} |   2 +-
 dubbo-samples-attachment/pom.xml                   | 238 +++++++++++++++++++-
 ...sumer.java => AttachmentConsumerBootstrap.java} |  94 ++++----
 ...vider.java => AttachmentProviderBootstrap.java} |  70 +++---
 .../samples/attachment/api/AttachmentService.java  |  26 ---
 ...ntImpl.java => AttachmentHelloServiceImpl.java} |  79 +++----
 .../META-INF/spring/attachment-consumer.xml        |   2 +-
 .../META-INF/spring/attachment-provider.xml        |   6 +-
 dubbo-samples-basic/pom.xml                        | 237 +++++++++++++++++++-
 ...icConsumer.java => BasicConsumerBootstrap.java} |   8 +-
 ...icProvider.java => BasicProviderBootstrap.java} |   2 +-
 .../dubbo/samples/basic/api/DemoService.java       |  26 ---
 ...ServiceImpl.java => BasicHelloServiceImpl.java} |   9 +-
 .../main/resources/spring/dubbo-demo-consumer.xml  |   4 +-
 .../main/resources/spring/dubbo-demo-provider.xml  |   6 +-
 dubbo-samples-cache/pom.xml                        | 237 +++++++++++++++++++-
 ...heConsumer.java => CacheConsumerBootstrap.java} |  14 +-
 ...heProvider.java => CacheProviderBootstrap.java} |   4 +-
 .../dubbo/samples/cache/api/CacheService.java      |  29 ---
 ...ServiceImpl.java => CacheHelloServiceImpl.java} |  12 +-
 .../src/main/resources/spring/cache-consumer.xml   |   4 +-
 .../src/main/resources/spring/cache-provider.xml   |   6 +-
 dubbo-samples-callback/pom.xml                     | 237 +++++++++++++++++++-
 ...onsumer.java => CallbackConsumerBootstrap.java} |   4 +-
 ...rovider.java => CallbackProviderBootstrap.java} |   2 +-
 dubbo-samples-context/pom.xml                      | 236 +++++++++++++++++++-
 ...Consumer.java => ContextConsumerBootstrap.java} |   8 +-
 ...Provider.java => ContextProviderBootstrap.java} |   2 +-
 .../dubbo/samples/context/api/ContextService.java  |  22 --
 ...rviceImpl.java => ContextHelloServiceImpl.java} |   5 +-
 .../resources/spring/dubbo-context-consumer.xml    |   4 +-
 .../resources/spring/dubbo-context-provider.xml    |   6 +-
 dubbo-samples-direct/pom.xml                       | 237 +++++++++++++++++++-
 ...Consumer.java => DirectConsumerrBootstrap.java} |   6 +-
 ...tProvicer.java => DirectProvicerBootstrap.java} |   2 +-
 .../dubbo/samples/direct/api/DirectService.java    |  27 ---
 ...erviceImpl.java => DirectHelloServiceImpl.java} |  11 +-
 .../resources/spring/dubbo-direct-consumer.xml     |   4 +-
 .../resources/spring/dubbo-direct-provider.xml     |   6 +-
 dubbo-samples-docker/pom.xml                       | 224 ++++++++++++++++++-
 dubbo-samples-echo/pom.xml                         | 238 +++++++++++++++++++-
 ...choConsumer.java => EchoConsumerBootstrap.java} |  10 +-
 ...choProvider.java => EchoProviderBootstrap.java} |   2 +-
 .../apache/dubbo/samples/echo/api/DemoService.java |  26 ---
 ...oServiceImpl.java => EchoHelloServiceImpl.java} |   9 +-
 .../src/main/resources/spring/echo-consumer.xml    |   4 +-
 .../src/main/resources/spring/echo-provider.xml    |   6 +-
 dubbo-samples-generic/pom.xml                      | 237 +++++++++++++++++++-
 dubbo-samples-group/pom.xml                        | 237 +++++++++++++++++++-
 dubbo-samples-http/pom.xml                         | 232 +++++++++++++++++++-
 dubbo-samples-local/pom.xml                        | 238 +++++++++++++++++++-
 dubbo-samples-merge/pom.xml                        | 237 +++++++++++++++++++-
 dubbo-samples-mock/pom.xml                         | 236 +++++++++++++++++++-
 dubbo-samples-monitor/pom.xml                      | 236 +++++++++++++++++++-
 dubbo-samples-multi-registry/pom.xml               | 237 +++++++++++++++++++-
 dubbo-samples-notify/pom.xml                       | 237 +++++++++++++++++++-
 dubbo-samples-rest/pom.xml                         | 230 ++++++++++++++++++-
 dubbo-samples-scala/pom.xml                        | 224 ++++++++++++++++++-
 dubbo-samples-spring-boot-hystrix/pom.xml          | 224 ++++++++++++++++++-
 dubbo-samples-spring-hystrix/pom.xml               | 230 ++++++++++++++++++-
 .../samples/annotation/AnnotationConsumer.java     |  21 +-
 .../samples/annotation/AnnotationProvider.java     |   1 -
 .../annotation/action/AnnotationAction.java        |  36 ++-
 .../samples/annotation/api/AnnotationService.java  |   6 +
 ...erviceImpl.java => AnnotationService2Impl.java} |  41 +++-
 .../annotation/impl/AnnotationServiceImpl.java     |  29 ++-
 dubbo-samples-stub/pom.xml                         | 237 +++++++++++++++++++-
 dubbo-samples-switch-serialization-thread/pom.xml  | 236 +++++++++++++++++++-
 dubbo-samples-validation/pom.xml                   | 233 +++++++++++++++++++-
 dubbo-samples-version/pom.xml                      | 237 +++++++++++++++++++-
 dubbo-samples-zipkin/pom.xml                       | 217 ++++++++++++++++++
 dubbo-samples-zookeeper/pom.xml                    | 236 +++++++++++++++++++-
 .../ZookeeperConsumerBootstrap.java}               |  11 +-
 .../ZookeeperProviderBootstrap.java}               |   6 +-
 .../action/ZookeeperHelloServiceConsumer.java}     |  11 +-
 .../zookeeper/impl/ZookeeperHelloServiceImpl.java  |   7 +-
 .../resources/spring/dubbo-consumer.properties     |  10 +-
 .../resources/spring/dubbo-provider.properties     |  10 +-
 pom.xml                                            | 224 +------------------
 104 files changed, 7093 insertions(+), 1129 deletions(-)

diff --git a/dubbo-samples-annotation/README.md b/dubbo-samples-annotation/README.md
index b3f6715..5b90443 100644
--- a/dubbo-samples-annotation/README.md
+++ b/dubbo-samples-annotation/README.md
@@ -6,13 +6,13 @@ First, there have to be an overall configuration of provider:
 
 ```Java
 @Configuration
-@EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.impl")
+@EnableDubbo(scanBasePackages = org.apache.dubbo.samples.annotation.implation.impl")
 @PropertySource("classpath:/spring/dubbo-provider.properties")
 static class ProviderConfiguration {
 }
 ``` 
 
-`@EnableDubbo` will enable Spring to scan `org.apache.dubbo.samples.impl` package to find anything annotated by Dubbo annotation.
+`@EnableDubbo` will enable Spring to scan `org.apache.dubbo.samples.annotation.impl` package to find anything annotated by Dubbo annotation.
 
 As a provider, the interface implementation class have to be annotated by `@Service`:
 
@@ -34,9 +34,9 @@ The overall configuration for consumer is very smilier to provider's:
 
 ```Java
 @Configuration
-@EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.action")
+@EnableDubbo(scanBasePackages = org.apache.dubbo.samples.annotation.actionion.action")
 @PropertySource("classpath:/spring/dubbo-consumer.properties")
-@ComponentScan(value = {"org.apache.dubbo.samples.action"})
+@ComponentScaorg.apache.dubbo.samples.annotation.actionles.annotation.action"})
 static class ConsumerConfiguration {
 
 }
diff --git a/dubbo-samples-annotation/pom.xml b/dubbo-samples-annotation/pom.xml
index 8383f11..743ec2f 100644
--- a/dubbo-samples-annotation/pom.xml
+++ b/dubbo-samples-annotation/pom.xml
@@ -18,13 +18,242 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
-
+    <groupId>org.apache.dubbo</groupId>
     <artifactId>dubbo-samples-annotation</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency><dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/ConsumerBootstrap.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/AnnotationConsumerBootstrap.java
similarity index 86%
rename from dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/ConsumerBootstrap.java
rename to dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/AnnotationConsumerBootstrap.java
index 7e280dd..4c493a5 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/ConsumerBootstrap.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/AnnotationConsumerBootstrap.java
@@ -19,29 +19,30 @@
 
 package org.apache.dubbo.samples.annotation;
 
+import org.apache.dubbo.samples.annotation.action.AnnotationHelloServiceConsumer;
+
 import com.alibaba.dubbo.config.ApplicationConfig;
 import com.alibaba.dubbo.config.ConsumerConfig;
 import com.alibaba.dubbo.config.RegistryConfig;
 import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.apache.dubbo.samples.action.GreetingServiceConsumer;
 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 
-public class ConsumerBootstrap {
+public class AnnotationConsumerBootstrap {
 
     public static void main(String[] args) {
         AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConsumerConfiguration.class);
         context.start();
-        GreetingServiceConsumer greetingServiceConsumer = context.getBean(GreetingServiceConsumer.class);
+        AnnotationHelloServiceConsumer greetingServiceConsumer = context.getBean(AnnotationHelloServiceConsumer.class);
         String hello = greetingServiceConsumer.doSayHello("annotation");
         System.out.println("result: " + hello);
     }
 
     @Configuration
-    @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.action")
-    @ComponentScan(value = {"org.apache.dubbo.samples.action"})
+    @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.annotation.action")
+    @ComponentScan(value = {"org.apache.dubbo.samples.annotation.action"})
     static class ConsumerConfiguration {
         @Bean
         public ApplicationConfig applicationConfig() {
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/ProviderBootstrap.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/AnnotationProviderBootstrap.java
similarity index 93%
rename from dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/ProviderBootstrap.java
rename to dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/AnnotationProviderBootstrap.java
index 37cfa54..db645fe 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/ProviderBootstrap.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/AnnotationProviderBootstrap.java
@@ -24,12 +24,12 @@ import com.alibaba.dubbo.config.ProtocolConfig;
 import com.alibaba.dubbo.config.ProviderConfig;
 import com.alibaba.dubbo.config.RegistryConfig;
 import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.apache.dubbo.samples.support.EmbeddedZooKeeper;
+import org.apache.dubbo.samples.annotation.support.EmbeddedZooKeeper;
 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-public class ProviderBootstrap {
+public class AnnotationProviderBootstrap {
 
     public static void main(String[] args) throws Exception {
         new EmbeddedZooKeeper(2181, false).start();
@@ -39,7 +39,7 @@ public class ProviderBootstrap {
     }
 
     @Configuration
-    @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.impl")
+    @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.annotation.impl")
     static class ProviderConfiguration {
         @Bean
         public ProviderConfig providerConfig() {
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/action/GreetingServiceConsumer.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/action/AnnotationHelloServiceConsumer.java
similarity index 78%
rename from dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/action/GreetingServiceConsumer.java
rename to dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/action/AnnotationHelloServiceConsumer.java
index 86e9d61..32d0bb9 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/action/GreetingServiceConsumer.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/action/AnnotationHelloServiceConsumer.java
@@ -17,20 +17,21 @@
  *
  */
 
-package org.apache.dubbo.samples.action;
+package org.apache.dubbo.samples.annotation.action;
+
+import org.apache.dubbo.samples.api.client.HelloService;
 
 import com.alibaba.dubbo.config.annotation.Reference;
-import org.apache.dubbo.samples.api.GreetingService;
 import org.springframework.stereotype.Component;
 
-@Component("annotatedConsumer")
-public class GreetingServiceConsumer {
+@Component("AnnotationHelloServiceConsumer")
+public class AnnotationHelloServiceConsumer {
 
     @Reference
-    private GreetingService greetingService;
+    private HelloService helloService;
 
     public String doSayHello(String name) {
-        return greetingService.sayHello(name);
+        return helloService.sayHello(name);
     }
 
 }
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/config/ConsumerBootstrap.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/config/ConsumerBootstrap.java
similarity index 75%
rename from dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/config/ConsumerBootstrap.java
rename to dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/config/ConsumerBootstrap.java
index e2ff397..f09e85e 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/config/ConsumerBootstrap.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/config/ConsumerBootstrap.java
@@ -17,10 +17,11 @@
  *
  */
 
-package org.apache.dubbo.samples.config;
+package org.apache.dubbo.samples.annotation.config;
+
+import org.apache.dubbo.samples.annotation.action.AnnotationHelloServiceConsumer;
 
 import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.apache.dubbo.samples.action.GreetingServiceConsumer;
 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
@@ -31,15 +32,15 @@ public class ConsumerBootstrap {
     public static void main(String[] args) {
         AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConsumerConfiguration.class);
         context.start();
-        GreetingServiceConsumer greetingServiceConsumer = context.getBean(GreetingServiceConsumer.class);
-        String hello = greetingServiceConsumer.doSayHello("configuration");
+        AnnotationHelloServiceConsumer annotationHelloServiceConsumer = context.getBean(AnnotationHelloServiceConsumer.class);
+        String hello = annotationHelloServiceConsumer.doSayHello("configuration");
         System.out.println("result: " + hello);
     }
 
     @Configuration
-    @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.action")
+    @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.annotation.action")
     @PropertySource("classpath:/spring/dubbo-consumer.properties")
-    @ComponentScan(value = {"org.apache.dubbo.samples.action"})
+    @ComponentScan(value = {"org.apache.dubbo.samples.annotation.action"})
     static class ConsumerConfiguration {
 
     }
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/config/ProviderBootstrap.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/config/ProviderBootstrap.java
similarity index 88%
rename from dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/config/ProviderBootstrap.java
rename to dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/config/ProviderBootstrap.java
index cd14a82..3737b83 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/config/ProviderBootstrap.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/config/ProviderBootstrap.java
@@ -17,10 +17,11 @@
  *
  */
 
-package org.apache.dubbo.samples.config;
+package org.apache.dubbo.samples.annotation.config;
+
+import org.apache.dubbo.samples.annotation.support.EmbeddedZooKeeper;
 
 import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.apache.dubbo.samples.support.EmbeddedZooKeeper;
 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.PropertySource;
@@ -35,7 +36,7 @@ public class ProviderBootstrap {
     }
 
     @Configuration
-    @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.impl")
+    @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.annotation.impl")
     @PropertySource("classpath:/spring/dubbo-provider.properties")
     static class ProviderConfiguration {
     }
diff --git a/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/impl/AnnotatedGreetingService.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationHelloServiceImpl.java
similarity index 85%
rename from dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/impl/AnnotatedGreetingService.java
rename to dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationHelloServiceImpl.java
index 76df11a..eccc647 100644
--- a/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/impl/AnnotatedGreetingService.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationHelloServiceImpl.java
@@ -17,13 +17,14 @@
  *
  */
 
-package org.apache.dubbo.samples.impl;
+package org.apache.dubbo.samples.annotation.impl;
+
+import org.apache.dubbo.samples.api.client.HelloService;
 
 import com.alibaba.dubbo.config.annotation.Service;
-import org.apache.dubbo.samples.api.GreetingService;
 
 @Service
-public class AnnotatedGreetingService implements GreetingService {
+public class AnnotationHelloServiceImpl implements HelloService {
 
     public String sayHello(String name) {
         System.out.println("greeting service received: " + name);
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/support/EmbeddedZooKeeper.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/support/EmbeddedZooKeeper.java
similarity index 99%
rename from dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/support/EmbeddedZooKeeper.java
rename to dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/support/EmbeddedZooKeeper.java
index 6795507..2097fd7 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/support/EmbeddedZooKeeper.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/support/EmbeddedZooKeeper.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.samples.support;
+package org.apache.dubbo.samples.annotation.support;
 
 import java.io.File;
 import java.lang.reflect.Method;
@@ -252,4 +252,4 @@ public class EmbeddedZooKeeper implements SmartLifecycle {
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/api/GreetingService.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/api/GreetingService.java
deleted file mode 100644
index 997ece7..0000000
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/api/GreetingService.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- *
- *   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.
- *
- */
-
-package org.apache.dubbo.samples.api;
-
-public interface GreetingService {
-
-    String sayHello(String name);
-
-}
diff --git a/dubbo-samples-annotation/README.md b/dubbo-samples-api-client/README.md
similarity index 73%
copy from dubbo-samples-annotation/README.md
copy to dubbo-samples-api-client/README.md
index b3f6715..89ce395 100644
--- a/dubbo-samples-annotation/README.md
+++ b/dubbo-samples-api-client/README.md
@@ -6,13 +6,13 @@ First, there have to be an overall configuration of provider:
 
 ```Java
 @Configuration
-@EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.impl")
+@EnableDubbo(scanBasePackages = oorg.apache.dubbo.samples.annotation.implation.impl)
 @PropertySource("classpath:/spring/dubbo-provider.properties")
 static class ProviderConfiguration {
 }
 ``` 
 
-`@EnableDubbo` will enable Spring to scan `org.apache.dubbo.samples.impl` package to find anything annotated by Dubbo annotation.
+`@EnableDubbo` will enable Spring org.apache.dubbo.samples.annotation.implples.impl` package to find anything annotated by Dubbo annotation.
 
 As a provider, the interface implementation class have to be annotated by `@Service`:
 
@@ -34,9 +34,9 @@ The overall configuration for consumer is very smilier to provider's:
 
 ```Java
 @Configuration
-@EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.action")
+@EnableDubbo(scanBasePackages = oorg.apache.dubbo.samples.annotation.actionion.action)
 @PropertySource("classpath:/spring/dubbo-consumer.properties")
-@ComponentScan(value = {"org.apache.dubbo.samples.action"})
+@ComponentScan(vorg.apache.dubbo.samples.annotation.actions.annotation.action})
 static class ConsumerConfiguration {
 
 }
diff --git a/pom.xml b/dubbo-samples-api-client/pom.xml
similarity index 56%
copy from pom.xml
copy to dubbo-samples-api-client/pom.xml
index f6db953..bdd0972 100644
--- a/pom.xml
+++ b/dubbo-samples-api-client/pom.xml
@@ -19,50 +19,17 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-
     <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-samples-all</artifactId>
-    <packaging>pom</packaging>
+    <artifactId>dubbo-samples-api-client</artifactId>
     <version>1.0-SNAPSHOT</version>
-    <modules>
-        <module>dubbo-samples-annotation</module>
-        <module>dubbo-samples-async</module>
-        <module>dubbo-samples-attachment</module>
-        <module>dubbo-samples-basic</module>
-        <module>dubbo-samples-cache</module>
-        <module>dubbo-samples-callback</module>
-        <module>dubbo-samples-direct</module>
-        <module>dubbo-samples-echo</module>
-        <module>dubbo-samples-generic</module>
-        <module>dubbo-samples-group</module>
-        <module>dubbo-samples-merge</module>
-        <module>dubbo-samples-mock</module>
-        <module>dubbo-samples-notify</module>
-        <module>dubbo-samples-rest</module>
-        <module>dubbo-samples-stub</module>
-        <module>dubbo-samples-validation</module>
-        <module>dubbo-samples-version</module>
-        <module>dubbo-samples-docker</module>
-        <module>dubbo-samples-context</module>
-        <module>dubbo-samples-http</module>
-        <module>dubbo-samples-api</module>
-        <module>dubbo-samples-spring-hystrix</module>
-        <module>dubbo-samples-spring-boot-hystrix</module>
-        <module>dubbo-samples-monitor</module>
-        <module>dubbo-samples-zookeeper</module>
-        <module>dubbo-samples-multi-registry</module>
-        <module>dubbo-samples-switch-serialization-thread</module>
-        <module>dubbo-samples-scala</module>
-        <module>dubbo-samples-zipkin</module>
-        <module>dubbo-samples-local</module>
-    </modules>
+    <packaging>jar</packaging>
 
     <properties>
         <source.level>1.8</source.level>
         <target.level>1.8</target.level>
         <spring.version>4.3.16.RELEASE</spring.version>
-        <dubbo.version>2.6.4</dubbo.version>
-        <dubbo.rpc.version>2.6.4</dubbo.rpc.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
         <curator.version>2.12.0</curator.version>
         <validation-api.version>1.1.0.Final</validation-api.version>
         <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
@@ -74,98 +41,6 @@
         <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
     </properties>
 
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>org.springframework</groupId>
-                <artifactId>spring-framework-bom</artifactId>
-                <version>${spring.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-            <dependency>
-                <!-- Import dependency management from Spring Boot -->
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-dependencies</artifactId>
-                <version>${spring-boot.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-            <dependency>
-                <groupId>io.netty</groupId>
-                <artifactId>netty-all</artifactId>
-                <version>4.1.16.Final</version>
-            </dependency>
-            <dependency>
-                <groupId>com.alibaba</groupId>
-                <artifactId>dubbo</artifactId>
-                <version>${dubbo.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.alibaba</groupId>
-                <artifactId>dubbo-rpc-rest</artifactId>
-                <version>${dubbo.rpc.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.curator</groupId>
-                <artifactId>curator-framework</artifactId>
-                <version>${curator.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>javax.validation</groupId>
-                <artifactId>validation-api</artifactId>
-                <version>${validation-api.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.hibernate</groupId>
-                <artifactId>hibernate-validator</artifactId>
-                <version>${hibernate-validator.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.jboss.resteasy</groupId>
-                <artifactId>resteasy-jackson-provider</artifactId>
-                <version>${resteasy.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.curator</groupId>
-                <artifactId>curator-client</artifactId>
-                <version>${curator-client.version}</version>
-            </dependency>
-            <!-- swagger -->
-            <dependency>
-                <groupId>io.swagger</groupId>
-                <artifactId>swagger-annotations</artifactId>
-                <version>${swagger.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>io.swagger</groupId>
-                <artifactId>swagger-jaxrs</artifactId>
-                <version>${swagger.version}</version>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.curator</groupId>
-            <artifactId>curator-framework</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>io.netty</groupId>
-                    <artifactId>netty</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>dubbo</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-all</artifactId>
-        </dependency>
-    </dependencies>
-
     <build>
         <plugins>
             <plugin>
@@ -262,8 +137,9 @@
                                 <id>checkstyle-validation</id>
                                 <phase>validate</phase>
                                 <configuration>
-                                    <configLocation>codestyle/checkstyle.xml</configLocation>
-                                    <suppressionsLocation>codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
                                     <encoding>UTF-8</encoding>
                                     <consoleOutput>true</consoleOutput>
                                     <failOnViolation>true</failOnViolation>
@@ -278,4 +154,5 @@
             </build>
         </profile>
     </profiles>
+
 </project>
diff --git a/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/api/GreetingService.java b/dubbo-samples-api-client/src/main/java/org/apache/dubbo/samples/api/client/HelloService.java
similarity index 91%
rename from dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/api/GreetingService.java
rename to dubbo-samples-api-client/src/main/java/org/apache/dubbo/samples/api/client/HelloService.java
index 997ece7..44a4f13 100644
--- a/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/api/GreetingService.java
+++ b/dubbo-samples-api-client/src/main/java/org/apache/dubbo/samples/api/client/HelloService.java
@@ -17,9 +17,9 @@
  *
  */
 
-package org.apache.dubbo.samples.api;
+package org.apache.dubbo.samples.api.client;
 
-public interface GreetingService {
+public interface HelloService {
 
     String sayHello(String name);
 
diff --git a/dubbo-samples-zookeeper/src/main/resources/spring/dubbo-consumer.properties b/dubbo-samples-api-client/src/main/resources/log4j.properties
similarity index 74%
copy from dubbo-samples-zookeeper/src/main/resources/spring/dubbo-consumer.properties
copy to dubbo-samples-api-client/src/main/resources/log4j.properties
index be31a3c..dcb78e2 100644
--- a/dubbo-samples-zookeeper/src/main/resources/spring/dubbo-consumer.properties
+++ b/dubbo-samples-api-client/src/main/resources/log4j.properties
@@ -17,8 +17,8 @@
 #  
 #
 
-dubbo.application.name=demo-consumer
-# find out environment variable $DOCKER_HOST is and use its IP for zookeeper address if you are
-# running zookeeper in docker.
-dubbo.registry.address=zookeeper://$DOCKER_HOST:2181
-dubbo.consumer.timeout=3000
\ No newline at end of file
+log4j.rootLogger=info, stdout
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target=System.out
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=[%d{dd/MM/yy hh:mm:ss:sss z}] %t %5p %c{2}: %m%n
\ No newline at end of file
diff --git a/dubbo-samples-zookeeper/src/main/resources/spring/dubbo-consumer.properties b/dubbo-samples-api-client/src/main/resources/spring/dubbo-consumer.properties
similarity index 77%
copy from dubbo-samples-zookeeper/src/main/resources/spring/dubbo-consumer.properties
copy to dubbo-samples-api-client/src/main/resources/spring/dubbo-consumer.properties
index be31a3c..7a10a3a 100644
--- a/dubbo-samples-zookeeper/src/main/resources/spring/dubbo-consumer.properties
+++ b/dubbo-samples-api-client/src/main/resources/spring/dubbo-consumer.properties
@@ -17,8 +17,6 @@
 #  
 #
 
-dubbo.application.name=demo-consumer
-# find out environment variable $DOCKER_HOST is and use its IP for zookeeper address if you are
-# running zookeeper in docker.
-dubbo.registry.address=zookeeper://$DOCKER_HOST:2181
+dubbo.application.name=externalized-configuration-consumer
+dubbo.registry.address=zookeeper://127.0.0.1:2181
 dubbo.consumer.timeout=3000
\ No newline at end of file
diff --git a/dubbo-samples-zookeeper/src/main/resources/spring/dubbo-provider.properties b/dubbo-samples-api-client/src/main/resources/spring/dubbo-provider.properties
similarity index 77%
copy from dubbo-samples-zookeeper/src/main/resources/spring/dubbo-provider.properties
copy to dubbo-samples-api-client/src/main/resources/spring/dubbo-provider.properties
index 8a9cdfe..4d1eeee 100644
--- a/dubbo-samples-zookeeper/src/main/resources/spring/dubbo-provider.properties
+++ b/dubbo-samples-api-client/src/main/resources/spring/dubbo-provider.properties
@@ -17,9 +17,7 @@
 #  
 #
 
-dubbo.application.name=demo-provider
-# find out environment variable $DOCKER_HOST is and use its IP for zookeeper address if you are
-# running zookeeper in docker.
-dubbo.registry.address=zookeeper://$DOCKER_HOST:2181
+dubbo.application.name=externalized-configuration-provider
+dubbo.registry.address=zookeeper://127.0.0.1:2181
 dubbo.protocol.name=dubbo
 dubbo.protocol.port=20880
\ No newline at end of file
diff --git a/dubbo-samples-api/README.md b/dubbo-samples-api-invoker/README.md
similarity index 81%
rename from dubbo-samples-api/README.md
rename to dubbo-samples-api-invoker/README.md
index c3ea6c9..17b9159 100644
--- a/dubbo-samples-api/README.md
+++ b/dubbo-samples-api-invoker/README.md
@@ -11,11 +11,11 @@ mvn clean package
 ## Start the service provider
 
 ```bash
-mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.samples.provider.Application exec:java
+mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.samples.api.invoker.ApiInvokerProviderBootstrap exec:java
 ```
 
 ## Invoke the service consumer
 
 ```bash
-mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.samples.consumer.Application exec:java
+mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.samples.api.invoker.ApiInvokerConsumerBootstrap exec:java
 ```
diff --git a/pom.xml b/dubbo-samples-api-invoker/pom.xml
similarity index 85%
copy from pom.xml
copy to dubbo-samples-api-invoker/pom.xml
index f6db953..76a6a6e 100644
--- a/pom.xml
+++ b/dubbo-samples-api-invoker/pom.xml
@@ -15,54 +15,22 @@
   See the License for the specific language governing permissions and
   limitations under the License.
   -->
+
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
-
     <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-samples-all</artifactId>
-    <packaging>pom</packaging>
     <version>1.0-SNAPSHOT</version>
-    <modules>
-        <module>dubbo-samples-annotation</module>
-        <module>dubbo-samples-async</module>
-        <module>dubbo-samples-attachment</module>
-        <module>dubbo-samples-basic</module>
-        <module>dubbo-samples-cache</module>
-        <module>dubbo-samples-callback</module>
-        <module>dubbo-samples-direct</module>
-        <module>dubbo-samples-echo</module>
-        <module>dubbo-samples-generic</module>
-        <module>dubbo-samples-group</module>
-        <module>dubbo-samples-merge</module>
-        <module>dubbo-samples-mock</module>
-        <module>dubbo-samples-notify</module>
-        <module>dubbo-samples-rest</module>
-        <module>dubbo-samples-stub</module>
-        <module>dubbo-samples-validation</module>
-        <module>dubbo-samples-version</module>
-        <module>dubbo-samples-docker</module>
-        <module>dubbo-samples-context</module>
-        <module>dubbo-samples-http</module>
-        <module>dubbo-samples-api</module>
-        <module>dubbo-samples-spring-hystrix</module>
-        <module>dubbo-samples-spring-boot-hystrix</module>
-        <module>dubbo-samples-monitor</module>
-        <module>dubbo-samples-zookeeper</module>
-        <module>dubbo-samples-multi-registry</module>
-        <module>dubbo-samples-switch-serialization-thread</module>
-        <module>dubbo-samples-scala</module>
-        <module>dubbo-samples-zipkin</module>
-        <module>dubbo-samples-local</module>
-    </modules>
+    <packaging>jar</packaging>
+    <artifactId>dubbo-samples-api-invoker</artifactId>
 
     <properties>
         <source.level>1.8</source.level>
         <target.level>1.8</target.level>
         <spring.version>4.3.16.RELEASE</spring.version>
-        <dubbo.version>2.6.4</dubbo.version>
-        <dubbo.rpc.version>2.6.4</dubbo.rpc.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
         <curator.version>2.12.0</curator.version>
         <validation-api.version>1.1.0.Final</validation-api.version>
         <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
@@ -164,6 +132,11 @@
             <groupId>io.netty</groupId>
             <artifactId>netty-all</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 
     <build>
@@ -226,6 +199,18 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>exec-maven-plugin</artifactId>
+                <version>1.6.0</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>java</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
         <pluginManagement>
             <plugins>
@@ -262,8 +247,9 @@
                                 <id>checkstyle-validation</id>
                                 <phase>validate</phase>
                                 <configuration>
-                                    <configLocation>codestyle/checkstyle.xml</configLocation>
-                                    <suppressionsLocation>codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
                                     <encoding>UTF-8</encoding>
                                     <consoleOutput>true</consoleOutput>
                                     <failOnViolation>true</failOnViolation>
diff --git a/dubbo-samples-api/src/main/java/org/apache/dubbo/samples/consumer/Application.java b/dubbo-samples-api-invoker/src/main/java/org/apache/dubbo/samples/api/invoker/ApiInvokerConsumerBootstrap.java
similarity index 72%
rename from dubbo-samples-api/src/main/java/org/apache/dubbo/samples/consumer/Application.java
rename to dubbo-samples-api-invoker/src/main/java/org/apache/dubbo/samples/api/invoker/ApiInvokerConsumerBootstrap.java
index eb5955a..684dd90 100644
--- a/dubbo-samples-api/src/main/java/org/apache/dubbo/samples/consumer/Application.java
+++ b/dubbo-samples-api-invoker/src/main/java/org/apache/dubbo/samples/api/invoker/ApiInvokerConsumerBootstrap.java
@@ -15,21 +15,23 @@
  * limitations under the License.
  */
 
-package org.apache.dubbo.samples.consumer;
+package org.apache.dubbo.samples.api.invoker;
+
+import org.apache.dubbo.samples.api.client.HelloService;
 
 import com.alibaba.dubbo.config.ApplicationConfig;
 import com.alibaba.dubbo.config.ReferenceConfig;
 import com.alibaba.dubbo.config.RegistryConfig;
-import org.apache.dubbo.samples.api.GreetingsService;
 
-public class Application {
+public class ApiInvokerConsumerBootstrap {
     public static void main(String[] args) {
-        ReferenceConfig<GreetingsService> reference = new ReferenceConfig<>();
+        System.setProperty("java.net.preferIPv4Stack", "true");
+        ReferenceConfig<HelloService> reference = new ReferenceConfig<>();
         reference.setApplication(new ApplicationConfig("first-dubbo-consumer"));
         reference.setRegistry(new RegistryConfig("multicast://224.5.6.7:1234"));
-        reference.setInterface(GreetingsService.class);
-        GreetingsService greetingsService = reference.get();
-        String message = greetingsService.sayHello("dubbo");
+        reference.setInterface(HelloService.class);
+        HelloService helloService = reference.get();
+        String message = helloService.sayHello("dubbo");
         System.out.println(message);
     }
 }
diff --git a/dubbo-samples-api/src/main/java/org/apache/dubbo/samples/provider/Application.java b/dubbo-samples-api-invoker/src/main/java/org/apache/dubbo/samples/api/invoker/ApiInvokerProviderBootstrap.java
similarity index 74%
rename from dubbo-samples-api/src/main/java/org/apache/dubbo/samples/provider/Application.java
rename to dubbo-samples-api-invoker/src/main/java/org/apache/dubbo/samples/api/invoker/ApiInvokerProviderBootstrap.java
index b97b80d..58944da 100644
--- a/dubbo-samples-api/src/main/java/org/apache/dubbo/samples/provider/Application.java
+++ b/dubbo-samples-api-invoker/src/main/java/org/apache/dubbo/samples/api/invoker/ApiInvokerProviderBootstrap.java
@@ -15,22 +15,25 @@
  * limitations under the License.
  */
 
-package org.apache.dubbo.samples.provider;
+package org.apache.dubbo.samples.api.invoker;
+
+import org.apache.dubbo.samples.api.client.HelloService;
+import org.apache.dubbo.samples.api.invoker.impl.ApiHelloServiceImpl;
 
 import com.alibaba.dubbo.config.ApplicationConfig;
 import com.alibaba.dubbo.config.RegistryConfig;
 import com.alibaba.dubbo.config.ServiceConfig;
-import org.apache.dubbo.samples.api.GreetingsService;
 
 import java.io.IOException;
 
-public class Application {
+public class ApiInvokerProviderBootstrap {
     public static void main(String[] args) throws IOException {
-        ServiceConfig<GreetingsService> service = new ServiceConfig<>();
+        System.setProperty("java.net.preferIPv4Stack", "true");
+        ServiceConfig<HelloService> service = new ServiceConfig<>();
         service.setApplication(new ApplicationConfig("first-dubbo-provider"));
         service.setRegistry(new RegistryConfig("multicast://224.5.6.7:1234"));
-        service.setInterface(GreetingsService.class);
-        service.setRef(new GreetingsServiceImpl());
+        service.setInterface(HelloService.class);
+        service.setRef(new ApiHelloServiceImpl());
         service.export();
         System.out.println("first-dubbo-provider is running.");
         System.in.read();
diff --git a/dubbo-samples-api/src/main/java/org/apache/dubbo/samples/provider/GreetingsServiceImpl.java b/dubbo-samples-api-invoker/src/main/java/org/apache/dubbo/samples/api/invoker/impl/ApiHelloServiceImpl.java
similarity index 84%
rename from dubbo-samples-api/src/main/java/org/apache/dubbo/samples/provider/GreetingsServiceImpl.java
rename to dubbo-samples-api-invoker/src/main/java/org/apache/dubbo/samples/api/invoker/impl/ApiHelloServiceImpl.java
index f3339ac..f4c22f8 100644
--- a/dubbo-samples-api/src/main/java/org/apache/dubbo/samples/provider/GreetingsServiceImpl.java
+++ b/dubbo-samples-api-invoker/src/main/java/org/apache/dubbo/samples/api/invoker/impl/ApiHelloServiceImpl.java
@@ -15,11 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.dubbo.samples.provider;
+package org.apache.dubbo.samples.api.invoker.impl;
 
-import org.apache.dubbo.samples.api.GreetingsService;
+import org.apache.dubbo.samples.api.client.HelloService;
 
-public class GreetingsServiceImpl implements GreetingsService {
+public class ApiHelloServiceImpl implements HelloService {
     @Override
     public String sayHello(String name) {
         return "Hello " + name;
diff --git a/dubbo-samples-api/pom.xml b/dubbo-samples-api/pom.xml
deleted file mode 100644
index 07ac516..0000000
--- a/dubbo-samples-api/pom.xml
+++ /dev/null
@@ -1,47 +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.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>dubbo-samples-api</artifactId>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>exec-maven-plugin</artifactId>
-                <version>1.6.0</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>java</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-</project>
\ No newline at end of file
diff --git a/dubbo-samples-api/src/main/java/org/apache/dubbo/samples/api/GreetingsService.java b/dubbo-samples-api/src/main/java/org/apache/dubbo/samples/api/GreetingsService.java
deleted file mode 100644
index 906ac1a..0000000
--- a/dubbo-samples-api/src/main/java/org/apache/dubbo/samples/api/GreetingsService.java
+++ /dev/null
@@ -1,23 +0,0 @@
-
-/*
- * 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.
- */
-
-package org.apache.dubbo.samples.api;
-
-public interface GreetingsService {
-    String sayHello(String name);
-}
diff --git a/dubbo-samples-async/pom.xml b/dubbo-samples-async/pom.xml
index a73e801..134971b 100644
--- a/dubbo-samples-async/pom.xml
+++ b/dubbo-samples-async/pom.xml
@@ -18,13 +18,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-async</artifactId>
 
-</project>
\ No newline at end of file
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-async/src/main/java/org/apache/dubbo/samples/async/AsyncConsumer.java b/dubbo-samples-async/src/main/java/org/apache/dubbo/samples/async/AsyncConsumerBootstrap.java
similarity index 98%
rename from dubbo-samples-async/src/main/java/org/apache/dubbo/samples/async/AsyncConsumer.java
rename to dubbo-samples-async/src/main/java/org/apache/dubbo/samples/async/AsyncConsumerBootstrap.java
index 76010f2..f1d19bf 100644
--- a/dubbo-samples-async/src/main/java/org/apache/dubbo/samples/async/AsyncConsumer.java
+++ b/dubbo-samples-async/src/main/java/org/apache/dubbo/samples/async/AsyncConsumerBootstrap.java
@@ -27,7 +27,7 @@ import org.apache.dubbo.samples.async.api.AsyncService;
 
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
-public class AsyncConsumer {
+public class AsyncConsumerBootstrap {
 
     public static void main(String[] args) throws Exception {
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring/async-consumer.xml"});
diff --git a/dubbo-samples-async/src/main/java/org/apache/dubbo/samples/async/AsyncProvider.java b/dubbo-samples-async/src/main/java/org/apache/dubbo/samples/async/AsyncProviderBootstrap.java
similarity index 97%
rename from dubbo-samples-async/src/main/java/org/apache/dubbo/samples/async/AsyncProvider.java
rename to dubbo-samples-async/src/main/java/org/apache/dubbo/samples/async/AsyncProviderBootstrap.java
index 7866479..3ad1dbd 100644
--- a/dubbo-samples-async/src/main/java/org/apache/dubbo/samples/async/AsyncProvider.java
+++ b/dubbo-samples-async/src/main/java/org/apache/dubbo/samples/async/AsyncProviderBootstrap.java
@@ -21,7 +21,7 @@ package org.apache.dubbo.samples.async;
 
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
-public class AsyncProvider {
+public class AsyncProviderBootstrap {
 
     public static void main(String[] args) throws Exception {
         new EmbeddedZooKeeper(2181, false).start();
diff --git a/dubbo-samples-attachment/pom.xml b/dubbo-samples-attachment/pom.xml
index b022266..64aea13 100644
--- a/dubbo-samples-attachment/pom.xml
+++ b/dubbo-samples-attachment/pom.xml
@@ -18,13 +18,239 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-attachment</artifactId>
 
-</project>
\ No newline at end of file
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/AttachmentConsumer.java b/dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/AttachmentConsumerBootstrap.java
similarity index 82%
rename from dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/AttachmentConsumer.java
rename to dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/AttachmentConsumerBootstrap.java
index 3e01b35..74fd217 100644
--- a/dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/AttachmentConsumer.java
+++ b/dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/AttachmentConsumerBootstrap.java
@@ -1,47 +1,47 @@
-/*
- *
- *   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.
- *
- */
-
-package org.apache.dubbo.samples.attachment;
-
-import com.alibaba.dubbo.rpc.RpcContext;
-import org.apache.dubbo.samples.attachment.api.AttachmentService;
-
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-
-public class AttachmentConsumer {
-
-    public static void main(String[] args) {
-        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"META-INF/spring/attachment-consumer.xml"});
-        context.start();
-        AttachmentService attachmentService = (AttachmentService) context.getBean("demoService"); // get remote service proxy
-
-        while(true){
-            try{
-                Thread.sleep(1000);
-                String consumerName = context.getBeanDefinitionNames()[0];
-                RpcContext.getContext().setAttachment("name",  consumerName);
-                String hello = attachmentService.sayHello("world");
-                System.out.println(hello);
-            }catch (Throwable throwable){
-                throwable.printStackTrace();
-            }
-        }
-    }
-}
+/*
+ *
+ *   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.
+ *
+ */
+
+package org.apache.dubbo.samples.attachment;
+
+import org.apache.dubbo.samples.api.client.HelloService;
+
+import com.alibaba.dubbo.rpc.RpcContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+
+public class AttachmentConsumerBootstrap {
+
+    public static void main(String[] args) {
+        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"META-INF/spring/attachment-consumer.xml"});
+        context.start();
+        HelloService helloService = (HelloService) context.getBean("demoService"); // get remote service proxy
+
+        while(true){
+            try{
+                Thread.sleep(1000);
+                String consumerName = context.getBeanDefinitionNames()[0];
+                RpcContext.getContext().setAttachment("name",  consumerName);
+                String hello = helloService.sayHello("world");
+                System.out.println(hello);
+            }catch (Throwable throwable){
+                throwable.printStackTrace();
+            }
+        }
+    }
+}
diff --git a/dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/AttachmentProvider.java b/dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/AttachmentProviderBootstrap.java
similarity index 95%
rename from dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/AttachmentProvider.java
rename to dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/AttachmentProviderBootstrap.java
index c7d326e..ba1a308 100644
--- a/dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/AttachmentProvider.java
+++ b/dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/AttachmentProviderBootstrap.java
@@ -1,35 +1,35 @@
-/*
- *
- *   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.
- *
- */
-
-package org.apache.dubbo.samples.attachment;
-
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-
-public class AttachmentProvider {
-
-    public static void main(String[] args) throws Exception{
-        new EmbeddedZooKeeper(2181, false).start();
-        System.setProperty("java.net.preferIPv4Stack", "true");
-        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"META-INF/spring/attachment-provider.xml"});
-        context.start();
-
-        System.in.read(); // press any key to exit
-    }
-}
+/*
+ *
+ *   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.
+ *
+ */
+
+package org.apache.dubbo.samples.attachment;
+
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+
+public class AttachmentProviderBootstrap {
+
+    public static void main(String[] args) throws Exception{
+        new EmbeddedZooKeeper(2181, false).start();
+        System.setProperty("java.net.preferIPv4Stack", "true");
+        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"META-INF/spring/attachment-provider.xml"});
+        context.start();
+
+        System.in.read(); // press any key to exit
+    }
+}
diff --git a/dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/api/AttachmentService.java b/dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/api/AttachmentService.java
deleted file mode 100644
index c59288b..0000000
--- a/dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/api/AttachmentService.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- *
- *   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.
- *
- */
-
-package org.apache.dubbo.samples.attachment.api;
-
-
-public interface AttachmentService {
-
-    public String sayHello(String name);
-}
diff --git a/dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/impl/AttachmentImpl.java b/dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/impl/AttachmentHelloServiceImpl.java
similarity index 87%
rename from dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/impl/AttachmentImpl.java
rename to dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/impl/AttachmentHelloServiceImpl.java
index 55673cd..59c0777 100644
--- a/dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/impl/AttachmentImpl.java
+++ b/dubbo-samples-attachment/src/main/java/org/apache/dubbo/samples/attachment/impl/AttachmentHelloServiceImpl.java
@@ -1,39 +1,40 @@
-/*
- *
- *   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.
- *
- */
-
-package org.apache.dubbo.samples.attachment.impl;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import com.alibaba.dubbo.rpc.RpcContext;
-import org.apache.dubbo.samples.attachment.api.AttachmentService;
-
-
-public class AttachmentImpl implements AttachmentService{
-
-    public String sayHello(String name) {
-
-        String consumerName = RpcContext.getContext().getAttachment("name");  //the attachment will be remove after this
-        System.out.println("receive attachment index: " + consumerName);
-        System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] Hello " + name + ", request from consumer: " + RpcContext
-            .getContext().getRemoteAddress());
-        return "Hello " + name + ", response from provider: " + RpcContext.getContext().getLocalAddress();
-    }
-}
+/*
+ *
+ *   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.
+ *
+ */
+
+package org.apache.dubbo.samples.attachment.impl;
+
+import org.apache.dubbo.samples.api.client.HelloService;
+
+import com.alibaba.dubbo.rpc.RpcContext;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+
+public class AttachmentHelloServiceImpl implements HelloService {
+
+    public String sayHello(String name) {
+
+        String consumerName = RpcContext.getContext().getAttachment("name");  //the attachment will be remove after this
+        System.out.println("receive attachment index: " + consumerName);
+        System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] Hello " + name + ", request from consumer: " + RpcContext
+                .getContext().getRemoteAddress());
+        return "Hello " + name + ", response from provider: " + RpcContext.getContext().getLocalAddress();
+    }
+}
diff --git a/dubbo-samples-attachment/src/main/resources/META-INF/spring/attachment-consumer.xml b/dubbo-samples-attachment/src/main/resources/META-INF/spring/attachment-consumer.xml
index 9ed8239..e2c91b0 100644
--- a/dubbo-samples-attachment/src/main/resources/META-INF/spring/attachment-consumer.xml
+++ b/dubbo-samples-attachment/src/main/resources/META-INF/spring/attachment-consumer.xml
@@ -31,7 +31,7 @@
 
     <!-- generate proxy for the remote service, then demoService can be used in the same way as the
     local regular interface -->
-    <dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.samples.attachment.api.AttachmentService"/>
+    <dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.samples.api.client.HelloService"/>
 
 </beans>
 
diff --git a/dubbo-samples-attachment/src/main/resources/META-INF/spring/attachment-provider.xml b/dubbo-samples-attachment/src/main/resources/META-INF/spring/attachment-provider.xml
index 32dd6b8..a84d19e 100644
--- a/dubbo-samples-attachment/src/main/resources/META-INF/spring/attachment-provider.xml
+++ b/dubbo-samples-attachment/src/main/resources/META-INF/spring/attachment-provider.xml
@@ -32,9 +32,9 @@
     <dubbo:protocol name="dubbo" port="20890"/>
 
     <!-- service implementation, as same as regular local bean -->
-    <bean id="demoService" class="org.apache.dubbo.samples.attachment.impl.AttachmentImpl"/>
+    <bean id="demoService" class="org.apache.dubbo.samples.attachment.impl.AttachmentHelloServiceImpl"/>
 
     <!-- declare the service interface to be exported -->
-    <dubbo:service interface="org.apache.dubbo.samples.attachment.api.AttachmentService" ref="demoService"/>
+    <dubbo:service interface="org.apache.dubbo.samples.api.client.HelloService" ref="demoService"/>
 
-</beans>
\ No newline at end of file
+</beans>
diff --git a/dubbo-samples-basic/pom.xml b/dubbo-samples-basic/pom.xml
index fc5149f..29e0fe2 100644
--- a/dubbo-samples-basic/pom.xml
+++ b/dubbo-samples-basic/pom.xml
@@ -18,13 +18,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-basic</artifactId>
 
-</project>
\ No newline at end of file
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/BasicConsumer.java b/dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/BasicConsumerBootstrap.java
similarity index 82%
rename from dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/BasicConsumer.java
rename to dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/BasicConsumerBootstrap.java
index d55ab2f..5b273f0 100644
--- a/dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/BasicConsumer.java
+++ b/dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/BasicConsumerBootstrap.java
@@ -19,21 +19,21 @@
 
 package org.apache.dubbo.samples.basic;
 
-import org.apache.dubbo.samples.basic.api.DemoService;
+import org.apache.dubbo.samples.api.client.HelloService;
 
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
-public class BasicConsumer {
+public class BasicConsumerBootstrap {
 
     public static void main(String[] args) {
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring/dubbo-demo-consumer.xml"});
         context.start();
-        DemoService demoService = (DemoService) context.getBean("demoService"); // get remote service proxy
+        HelloService helloService = (HelloService) context.getBean("demoService"); // get remote service proxy
 
         while (true) {
             try {
                 Thread.sleep(1000);
-                String hello = demoService.sayHello("world"); // call remote method
+                String hello = helloService.sayHello("world"); // call remote method
                 System.out.println(hello); // get result
 
             } catch (Throwable throwable) {
diff --git a/dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/BasicProvider.java b/dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/BasicProviderBootstrap.java
similarity index 97%
rename from dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/BasicProvider.java
rename to dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/BasicProviderBootstrap.java
index 1c23134..9cea7a9 100644
--- a/dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/BasicProvider.java
+++ b/dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/BasicProviderBootstrap.java
@@ -21,7 +21,7 @@ package org.apache.dubbo.samples.basic;
 
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
-public class BasicProvider {
+public class BasicProviderBootstrap {
 
     public static void main(String[] args) throws Exception {
         new EmbeddedZooKeeper(2181, false).start();
diff --git a/dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/api/DemoService.java b/dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/api/DemoService.java
deleted file mode 100644
index f83ffaf..0000000
--- a/dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/api/DemoService.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- *
- *   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.
- *
- */
-
-package org.apache.dubbo.samples.basic.api;
-
-public interface DemoService {
-
-    String sayHello(String name);
-
-}
diff --git a/dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/impl/DemoServiceImpl.java b/dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/impl/BasicHelloServiceImpl.java
similarity index 91%
rename from dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/impl/DemoServiceImpl.java
rename to dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/impl/BasicHelloServiceImpl.java
index c940836..08004fa 100644
--- a/dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/impl/DemoServiceImpl.java
+++ b/dubbo-samples-basic/src/main/java/org/apache/dubbo/samples/basic/impl/BasicHelloServiceImpl.java
@@ -19,13 +19,14 @@
 
 package org.apache.dubbo.samples.basic.impl;
 
-import java.text.SimpleDateFormat;
-import java.util.Date;
+import org.apache.dubbo.samples.api.client.HelloService;
 
 import com.alibaba.dubbo.rpc.RpcContext;
-import org.apache.dubbo.samples.basic.api.DemoService;
 
-public class DemoServiceImpl implements DemoService {
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class BasicHelloServiceImpl implements HelloService {
 
     public String sayHello(String name) {
         System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] Hello " + name + ", request from consumer: " + RpcContext
diff --git a/dubbo-samples-basic/src/main/resources/spring/dubbo-demo-consumer.xml b/dubbo-samples-basic/src/main/resources/spring/dubbo-demo-consumer.xml
index f2de0d7..3a329b7 100644
--- a/dubbo-samples-basic/src/main/resources/spring/dubbo-demo-consumer.xml
+++ b/dubbo-samples-basic/src/main/resources/spring/dubbo-demo-consumer.xml
@@ -31,6 +31,6 @@
 
     <!-- generate proxy for the remote service, then demoService can be used in the same way as the
     local regular interface -->
-    <dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.samples.basic.api.DemoService"/>
+    <dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.samples.api.client.HelloService"/>
 
-</beans>
\ No newline at end of file
+</beans>
diff --git a/dubbo-samples-basic/src/main/resources/spring/dubbo-demo-provider.xml b/dubbo-samples-basic/src/main/resources/spring/dubbo-demo-provider.xml
index 9edef6d..000a895 100644
--- a/dubbo-samples-basic/src/main/resources/spring/dubbo-demo-provider.xml
+++ b/dubbo-samples-basic/src/main/resources/spring/dubbo-demo-provider.xml
@@ -34,9 +34,9 @@
     <dubbo:protocol name="dubbo" port="20890"/>
 
     <!-- service implementation, as same as regular local bean -->
-    <bean id="demoService" class="org.apache.dubbo.samples.basic.impl.DemoServiceImpl"/>
+    <bean id="helloService" class="org.apache.dubbo.samples.basic.impl.BasicHelloServiceImpl"/>
 
     <!-- declare the service interface to be exported -->
-    <dubbo:service interface="org.apache.dubbo.samples.basic.api.DemoService" ref="demoService"/>
+    <dubbo:service interface="org.apache.dubbo.samples.api.client.HelloService" ref="helloService"/>
 
-</beans>
\ No newline at end of file
+</beans>
diff --git a/dubbo-samples-cache/pom.xml b/dubbo-samples-cache/pom.xml
index 4021e2d..3f9dfc7 100644
--- a/dubbo-samples-cache/pom.xml
+++ b/dubbo-samples-cache/pom.xml
@@ -18,13 +18,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-cache</artifactId>
 
-</project>
\ No newline at end of file
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/CacheConsumer.java b/dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/CacheConsumerBootstrap.java
similarity index 86%
rename from dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/CacheConsumer.java
rename to dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/CacheConsumerBootstrap.java
index 92bf586..61bfc95 100644
--- a/dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/CacheConsumer.java
+++ b/dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/CacheConsumerBootstrap.java
@@ -19,26 +19,26 @@
 
 package org.apache.dubbo.samples.cache;
 
-import org.apache.dubbo.samples.cache.api.CacheService;
+import org.apache.dubbo.samples.api.client.HelloService;
 
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 /**
- * CacheConsumer
+ * CacheConsumerBootstrap
  */
-public class CacheConsumer {
+public class CacheConsumerBootstrap {
 
     public static void main(String[] args) throws Exception {
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring/cache-consumer.xml"});
         context.start();
 
-        CacheService cacheService = (CacheService) context.getBean("cacheService");
+        HelloService cacheService = (HelloService) context.getBean("cacheService");
 
         // verify cache, same result is returned for different invocations (in fact, the return value increases
         // on every invocation on the server side)
         String fix = null;
         for (int i = 0; i < 5; i++) {
-            String result = cacheService.findCache("0");
+            String result = cacheService.sayHello("0");
             if (fix == null || fix.equals(result)) {
                 System.out.println("OK: " + result);
             } else {
@@ -52,7 +52,7 @@ public class CacheConsumer {
         for (int n = 0; n < 1001; n++) {
             String pre = null;
             for (int i = 0; i < 10; i++) {
-                String result = cacheService.findCache(String.valueOf(n));
+                String result = cacheService.sayHello(String.valueOf(n));
                 if (pre != null && !pre.equals(result)) {
                     System.err.println("ERROR: " + result);
                 }
@@ -61,7 +61,7 @@ public class CacheConsumer {
         }
 
         // verify if the first cache item is expired in LRU cache
-        String result = cacheService.findCache("0");
+        String result = cacheService.sayHello("0");
         if (fix != null && !fix.equals(result)) {
             System.out.println("OK: " + result);
         } else {
diff --git a/dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/CacheProvider.java b/dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/CacheProviderBootstrap.java
similarity index 95%
rename from dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/CacheProvider.java
rename to dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/CacheProviderBootstrap.java
index d8f7170..5d8e0f1 100644
--- a/dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/CacheProvider.java
+++ b/dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/CacheProviderBootstrap.java
@@ -22,9 +22,9 @@ package org.apache.dubbo.samples.cache;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 /**
- * CacheProvider
+ * CacheProviderBootstrap
  */
-public class CacheProvider {
+public class CacheProviderBootstrap {
 
     public static void main(String[] args) throws Exception {
         new EmbeddedZooKeeper(2181, false).start();
diff --git a/dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/api/CacheService.java b/dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/api/CacheService.java
deleted file mode 100644
index b6a536c..0000000
--- a/dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/api/CacheService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- *
- *   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.
- *
- */
-
-package org.apache.dubbo.samples.cache.api;
-
-/**
- * ValidationService
- */
-public interface CacheService {
-
-    String findCache(String id);
-
-}
diff --git a/dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/impl/CacheServiceImpl.java b/dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/impl/CacheHelloServiceImpl.java
similarity index 80%
rename from dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/impl/CacheServiceImpl.java
rename to dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/impl/CacheHelloServiceImpl.java
index 8fb73c6..db53497 100644
--- a/dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/impl/CacheServiceImpl.java
+++ b/dubbo-samples-cache/src/main/java/org/apache/dubbo/samples/cache/impl/CacheHelloServiceImpl.java
@@ -19,19 +19,19 @@
 
 package org.apache.dubbo.samples.cache.impl;
 
-import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.dubbo.samples.api.client.HelloService;
 
-import org.apache.dubbo.samples.cache.api.CacheService;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * ValidationServiceImpl
  */
-public class CacheServiceImpl implements CacheService {
+public class CacheHelloServiceImpl implements HelloService {
 
     private final AtomicInteger i = new AtomicInteger();
 
-    public String findCache(String id) {
-        return "request: " + id + ", response: " + i.getAndIncrement();
+    @Override
+    public String sayHello(String name) {
+        return "request: " + name + ", response: " + i.getAndIncrement();
     }
-
 }
diff --git a/dubbo-samples-cache/src/main/resources/spring/cache-consumer.xml b/dubbo-samples-cache/src/main/resources/spring/cache-consumer.xml
index 9fff969..a7d7174 100644
--- a/dubbo-samples-cache/src/main/resources/spring/cache-consumer.xml
+++ b/dubbo-samples-cache/src/main/resources/spring/cache-consumer.xml
@@ -26,6 +26,6 @@
 
     <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
 
-    <dubbo:reference id="cacheService" interface="org.apache.dubbo.samples.cache.api.CacheService" cache="true"/>
+    <dubbo:reference id="cacheService" interface="org.apache.dubbo.samples.api.client.HelloService" cache="true"/>
 
-</beans>
\ No newline at end of file
+</beans>
diff --git a/dubbo-samples-cache/src/main/resources/spring/cache-provider.xml b/dubbo-samples-cache/src/main/resources/spring/cache-provider.xml
index d63d61e..57f0787 100644
--- a/dubbo-samples-cache/src/main/resources/spring/cache-provider.xml
+++ b/dubbo-samples-cache/src/main/resources/spring/cache-provider.xml
@@ -28,8 +28,8 @@
 
     <dubbo:protocol name="dubbo" port="20880"/>
 
-    <bean id="cacheService" class="org.apache.dubbo.samples.cache.impl.CacheServiceImpl"/>
+    <bean id="cacheService" class="org.apache.dubbo.samples.cache.impl.CacheHelloServiceImpl"/>
 
-    <dubbo:service interface="org.apache.dubbo.samples.cache.api.CacheService" ref="cacheService"/>
+    <dubbo:service interface="org.apache.dubbo.samples.api.client.HelloService" ref="cacheService"/>
 
-</beans>
\ No newline at end of file
+</beans>
diff --git a/dubbo-samples-callback/pom.xml b/dubbo-samples-callback/pom.xml
index 5d97c67..1ad4877 100644
--- a/dubbo-samples-callback/pom.xml
+++ b/dubbo-samples-callback/pom.xml
@@ -18,13 +18,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-callback</artifactId>
 
-</project>
\ No newline at end of file
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-callback/src/main/java/org/apache/dubbo/samples/callback/CallbackConsumer.java b/dubbo-samples-callback/src/main/java/org/apache/dubbo/samples/callback/CallbackConsumerBootstrap.java
similarity index 95%
rename from dubbo-samples-callback/src/main/java/org/apache/dubbo/samples/callback/CallbackConsumer.java
rename to dubbo-samples-callback/src/main/java/org/apache/dubbo/samples/callback/CallbackConsumerBootstrap.java
index 9a432e4..6809578 100644
--- a/dubbo-samples-callback/src/main/java/org/apache/dubbo/samples/callback/CallbackConsumer.java
+++ b/dubbo-samples-callback/src/main/java/org/apache/dubbo/samples/callback/CallbackConsumerBootstrap.java
@@ -25,9 +25,9 @@ import org.apache.dubbo.samples.callback.api.CallbackService;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 /**
- * CallbackConsumer
+ * CallbackConsumerBootstrap
  */
-public class CallbackConsumer {
+public class CallbackConsumerBootstrap {
 
     public static void main(String[] args) throws Exception {
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring/callback-consumer.xml"});
diff --git a/dubbo-samples-callback/src/main/java/org/apache/dubbo/samples/callback/CallbackProvider.java b/dubbo-samples-callback/src/main/java/org/apache/dubbo/samples/callback/CallbackProviderBootstrap.java
similarity index 96%
rename from dubbo-samples-callback/src/main/java/org/apache/dubbo/samples/callback/CallbackProvider.java
rename to dubbo-samples-callback/src/main/java/org/apache/dubbo/samples/callback/CallbackProviderBootstrap.java
index ca6c372..a3a7ab3 100644
--- a/dubbo-samples-callback/src/main/java/org/apache/dubbo/samples/callback/CallbackProvider.java
+++ b/dubbo-samples-callback/src/main/java/org/apache/dubbo/samples/callback/CallbackProviderBootstrap.java
@@ -24,7 +24,7 @@ import org.springframework.context.support.ClassPathXmlApplicationContext;
 /**
  * MergeProvider
  */
-public class CallbackProvider {
+public class CallbackProviderBootstrap {
 
     public static void main(String[] args) throws Exception {
         new EmbeddedZooKeeper(2181, false).start();
diff --git a/dubbo-samples-context/pom.xml b/dubbo-samples-context/pom.xml
index 086990b..9985fa9 100644
--- a/dubbo-samples-context/pom.xml
+++ b/dubbo-samples-context/pom.xml
@@ -18,14 +18,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-context</artifactId>
 
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
 
-</project>
\ No newline at end of file
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/ContextConsumer.java b/dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/ContextConsumerBootstrap.java
similarity index 88%
rename from dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/ContextConsumer.java
rename to dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/ContextConsumerBootstrap.java
index e0f4b8e..098f117 100644
--- a/dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/ContextConsumer.java
+++ b/dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/ContextConsumerBootstrap.java
@@ -17,17 +17,17 @@
 
 package org.apache.dubbo.samples.context;
 
-import com.alibaba.dubbo.rpc.RpcContext;
-import org.apache.dubbo.samples.context.api.ContextService;
+import org.apache.dubbo.samples.api.client.HelloService;
 
+import com.alibaba.dubbo.rpc.RpcContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
-public class ContextConsumer {
+public class ContextConsumerBootstrap {
 
     public static void main(String[] args) {
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring/dubbo-context-consumer.xml"});
         context.start();
-        ContextService contextService = (ContextService) context.getBean("demoService"); // get remote service proxy
+        HelloService contextService = (HelloService) context.getBean("helloService"); // get remote service proxy
 
         String hello = contextService.sayHello("world"); // call remote method
 
diff --git a/dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/ContextProvider.java b/dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/ContextProviderBootstrap.java
similarity index 96%
rename from dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/ContextProvider.java
rename to dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/ContextProviderBootstrap.java
index dff9143..c518e1d 100644
--- a/dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/ContextProvider.java
+++ b/dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/ContextProviderBootstrap.java
@@ -19,7 +19,7 @@ package org.apache.dubbo.samples.context;
 
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
-public class ContextProvider {
+public class ContextProviderBootstrap {
 
     public static void main(String[] args) throws Exception {
         new EmbeddedZooKeeper(2181, false).start();
diff --git a/dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/api/ContextService.java b/dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/api/ContextService.java
deleted file mode 100644
index 52b205b..0000000
--- a/dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/api/ContextService.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- *   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.
- */
-
-package org.apache.dubbo.samples.context.api;
-
-public interface ContextService {
-    public String sayHello(String name);
-}
diff --git a/dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/impl/ContextServiceImpl.java b/dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/impl/ContextHelloServiceImpl.java
similarity index 91%
rename from dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/impl/ContextServiceImpl.java
rename to dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/impl/ContextHelloServiceImpl.java
index 0c6bcbd..0f32eae 100644
--- a/dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/impl/ContextServiceImpl.java
+++ b/dubbo-samples-context/src/main/java/org/apache/dubbo/samples/context/impl/ContextHelloServiceImpl.java
@@ -17,10 +17,11 @@
 
 package org.apache.dubbo.samples.context.impl;
 
+import org.apache.dubbo.samples.api.client.HelloService;
+
 import com.alibaba.dubbo.rpc.RpcContext;
-import org.apache.dubbo.samples.context.api.ContextService;
 
-public class ContextServiceImpl implements ContextService{
+public class ContextHelloServiceImpl implements HelloService {
 
     @Override
     public String sayHello(String name) {
diff --git a/dubbo-samples-context/src/main/resources/spring/dubbo-context-consumer.xml b/dubbo-samples-context/src/main/resources/spring/dubbo-context-consumer.xml
index 36c349e..48445bf 100644
--- a/dubbo-samples-context/src/main/resources/spring/dubbo-context-consumer.xml
+++ b/dubbo-samples-context/src/main/resources/spring/dubbo-context-consumer.xml
@@ -31,6 +31,6 @@
 
     <!-- generate proxy for the remote service, then demoService can be used in the same way as the
     local regular interface -->
-    <dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.samples.context.api.ContextService"/>
+    <dubbo:reference id="helloService" check="false" interface="org.apache.dubbo.samples.api.client.HelloService"/>
 
-</beans>
\ No newline at end of file
+</beans>
diff --git a/dubbo-samples-context/src/main/resources/spring/dubbo-context-provider.xml b/dubbo-samples-context/src/main/resources/spring/dubbo-context-provider.xml
index 81929a0..52899f1 100644
--- a/dubbo-samples-context/src/main/resources/spring/dubbo-context-provider.xml
+++ b/dubbo-samples-context/src/main/resources/spring/dubbo-context-provider.xml
@@ -34,9 +34,9 @@
     <dubbo:protocol name="dubbo" port="20890"/>
 
     <!-- service implementation, as same as regular local bean -->
-    <bean id="contextService" class="org.apache.dubbo.samples.context.impl.ContextServiceImpl"/>
+    <bean id="contextService" class="org.apache.dubbo.samples.context.impl.ContextHelloServiceImpl"/>
 
     <!-- declare the service interface to be exported -->
-    <dubbo:service interface="org.apache.dubbo.samples.context.api.ContextService" ref="contextService"/>
+    <dubbo:service interface="org.apache.dubbo.samples.api.client.HelloService" ref="contextService"/>
 
-</beans>
\ No newline at end of file
+</beans>
diff --git a/dubbo-samples-direct/pom.xml b/dubbo-samples-direct/pom.xml
index cd091d9..6cf9f29 100644
--- a/dubbo-samples-direct/pom.xml
+++ b/dubbo-samples-direct/pom.xml
@@ -18,13 +18,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-direct</artifactId>
 
-</project>
\ No newline at end of file
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/DirectConsumer.java b/dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/DirectConsumerrBootstrap.java
similarity index 89%
rename from dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/DirectConsumer.java
rename to dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/DirectConsumerrBootstrap.java
index 3aedc81..c683493 100644
--- a/dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/DirectConsumer.java
+++ b/dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/DirectConsumerrBootstrap.java
@@ -19,12 +19,12 @@
 
 package org.apache.dubbo.samples.direct;
 
-import org.apache.dubbo.samples.direct.api.DirectService;
+import org.apache.dubbo.samples.api.client.HelloService;
 
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 
-public class DirectConsumer {
+public class DirectConsumerrBootstrap {
 
     public static void main(String[] args) {
         //Prevent to get IPV6 address,this way only work in debug mode
@@ -32,7 +32,7 @@ public class DirectConsumer {
         System.setProperty("java.net.preferIPv4Stack", "true");
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring/dubbo-direct-consumer.xml"});
         context.start();
-        DirectService directService = (DirectService) context.getBean("directService"); // get remote service proxy
+        HelloService directService = (HelloService) context.getBean("directService"); // get remote service proxy
 
         while (true) {
             try {
diff --git a/dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/DirectProvicer.java b/dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/DirectProvicerBootstrap.java
similarity index 97%
rename from dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/DirectProvicer.java
rename to dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/DirectProvicerBootstrap.java
index e56ed73..ba3f396 100644
--- a/dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/DirectProvicer.java
+++ b/dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/DirectProvicerBootstrap.java
@@ -22,7 +22,7 @@ package org.apache.dubbo.samples.direct;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 
-public class DirectProvicer {
+public class DirectProvicerBootstrap {
 
     public static void main(String[] args) throws Exception {
         //Prevent to get IPV6 address,this way only work in debug mode
diff --git a/dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/api/DirectService.java b/dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/api/DirectService.java
deleted file mode 100644
index a65e479..0000000
--- a/dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/api/DirectService.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- *
- *   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.
- *
- */
-
-package org.apache.dubbo.samples.direct.api;
-
-
-public interface DirectService {
-
-    String sayHello(String name);
-
-}
diff --git a/dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/impl/DirectServiceImpl.java b/dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/impl/DirectHelloServiceImpl.java
similarity index 88%
rename from dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/impl/DirectServiceImpl.java
rename to dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/impl/DirectHelloServiceImpl.java
index 3621ee5..14df92a 100644
--- a/dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/impl/DirectServiceImpl.java
+++ b/dubbo-samples-direct/src/main/java/org/apache/dubbo/samples/direct/impl/DirectHelloServiceImpl.java
@@ -19,18 +19,19 @@
 
 package org.apache.dubbo.samples.direct.impl;
 
-import java.text.SimpleDateFormat;
-import java.util.Date;
+import org.apache.dubbo.samples.api.client.HelloService;
 
 import com.alibaba.dubbo.rpc.RpcContext;
-import org.apache.dubbo.samples.direct.api.DirectService;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
 
 
-public class DirectServiceImpl implements DirectService{
+public class DirectHelloServiceImpl implements HelloService {
 
     public String sayHello(String name) {
         System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] Hello " + name + ", request from consumer: " + RpcContext
-            .getContext().getRemoteAddress());
+                .getContext().getRemoteAddress());
         return "Hello " + name + ", response from provider: " + RpcContext.getContext().getLocalAddress();
     }
 }
diff --git a/dubbo-samples-direct/src/main/resources/spring/dubbo-direct-consumer.xml b/dubbo-samples-direct/src/main/resources/spring/dubbo-direct-consumer.xml
index fe5cf12..3536404 100644
--- a/dubbo-samples-direct/src/main/resources/spring/dubbo-direct-consumer.xml
+++ b/dubbo-samples-direct/src/main/resources/spring/dubbo-direct-consumer.xml
@@ -31,6 +31,6 @@
 
     <!-- generate proxy for the remote service, then demoService can be used in the same way as the
     local regular interface -->
-    <dubbo:reference id="directService" check="false" interface="org.apache.dubbo.samples.direct.api.DirectService" url="localhost:20880"/>
+    <dubbo:reference id="directService" check="false" interface="org.apache.dubbo.samples.api.client.HelloService" url="localhost:20880"/>
 
-</beans>
\ No newline at end of file
+</beans>
diff --git a/dubbo-samples-direct/src/main/resources/spring/dubbo-direct-provider.xml b/dubbo-samples-direct/src/main/resources/spring/dubbo-direct-provider.xml
index 688a463..bc14217 100644
--- a/dubbo-samples-direct/src/main/resources/spring/dubbo-direct-provider.xml
+++ b/dubbo-samples-direct/src/main/resources/spring/dubbo-direct-provider.xml
@@ -32,9 +32,9 @@
     <dubbo:protocol name="dubbo" port="20880"/>
 
     <!-- service implementation, as same as regular local bean -->
-    <bean id="directService" class="org.apache.dubbo.samples.direct.impl.DirectServiceImpl"/>
+    <bean id="directService" class="org.apache.dubbo.samples.direct.impl.DirectHelloServiceImpl"/>
 
     <!-- declare the service interface to be exported -->
-    <dubbo:service interface="org.apache.dubbo.samples.direct.api.DirectService" ref="directService"/>
+    <dubbo:service interface="org.apache.dubbo.samples.api.client.HelloService" ref="directService"/>
 
-</beans>
\ No newline at end of file
+</beans>
diff --git a/dubbo-samples-docker/pom.xml b/dubbo-samples-docker/pom.xml
index cd13133..bf8eece 100644
--- a/dubbo-samples-docker/pom.xml
+++ b/dubbo-samples-docker/pom.xml
@@ -18,30 +18,131 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-docker</artifactId>
 
     <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <java.version>1.7</java.version>
     </properties>
 
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
     <dependencies>
         <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter</artifactId>
         </dependency>
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>dubbo</artifactId>
-            <version>2.6.4</version>
+            <version>2.6.6-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>io.netty</groupId>
@@ -110,6 +211,64 @@
     <build>
         <plugins>
             <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <configuration>
@@ -125,6 +284,57 @@
                 </executions>
             </plugin>
         </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
     </build>
 
-</project>
\ No newline at end of file
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/dubbo-samples-echo/pom.xml b/dubbo-samples-echo/pom.xml
index da203dd..8feafd8 100644
--- a/dubbo-samples-echo/pom.xml
+++ b/dubbo-samples-echo/pom.xml
@@ -19,13 +19,239 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-echo</artifactId>
 
-</project>
\ No newline at end of file
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/EchoConsumer.java b/dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/EchoConsumerBootstrap.java
similarity index 83%
rename from dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/EchoConsumer.java
rename to dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/EchoConsumerBootstrap.java
index c470218..60ba86c 100644
--- a/dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/EchoConsumer.java
+++ b/dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/EchoConsumerBootstrap.java
@@ -19,20 +19,20 @@
 
 package org.apache.dubbo.samples.echo;
 
-import com.alibaba.dubbo.rpc.service.EchoService;
-import org.apache.dubbo.samples.echo.api.DemoService;
+import org.apache.dubbo.samples.api.client.HelloService;
 
+import com.alibaba.dubbo.rpc.service.EchoService;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 
-public class EchoConsumer {
+public class EchoConsumerBootstrap {
 
     public static void main(String[] args) {
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"spring/echo-consumer.xml"});
         context.start();
-        DemoService demoService = (DemoService) context.getBean("demoService"); // get remote service proxy
+        HelloService helloService = (HelloService) context.getBean("helloService"); // get remote service proxy
 
-        EchoService echoService = (EchoService) demoService;
+        EchoService echoService = (EchoService) helloService;
         String status = (String)echoService.$echo("OK");
         System.out.println("echo result: " + status);
     }
diff --git a/dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/EchoProvider.java b/dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/EchoProviderBootstrap.java
similarity index 97%
rename from dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/EchoProvider.java
rename to dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/EchoProviderBootstrap.java
index f307485..c0c323e 100644
--- a/dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/EchoProvider.java
+++ b/dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/EchoProviderBootstrap.java
@@ -22,7 +22,7 @@ package org.apache.dubbo.samples.echo;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
 
-public class EchoProvider {
+public class EchoProviderBootstrap {
 
     public static void main(String[] args) throws Exception {
         new EmbeddedZooKeeper(2181, false).start();
diff --git a/dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/api/DemoService.java b/dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/api/DemoService.java
deleted file mode 100644
index facc6c1..0000000
--- a/dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/api/DemoService.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- *
- *   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.
- *
- */
-
-package org.apache.dubbo.samples.echo.api;
-
-public interface DemoService {
-
-    String sayHello(String name);
-
-}
diff --git a/dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/impl/DemoServiceImpl.java b/dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/impl/EchoHelloServiceImpl.java
similarity index 91%
rename from dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/impl/DemoServiceImpl.java
rename to dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/impl/EchoHelloServiceImpl.java
index eb8b46a..d942394 100644
--- a/dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/impl/DemoServiceImpl.java
+++ b/dubbo-samples-echo/src/main/java/org/apache/dubbo/samples/echo/impl/EchoHelloServiceImpl.java
@@ -19,13 +19,14 @@
 
 package org.apache.dubbo.samples.echo.impl;
 
-import java.text.SimpleDateFormat;
-import java.util.Date;
+import org.apache.dubbo.samples.api.client.HelloService;
 
 import com.alibaba.dubbo.rpc.RpcContext;
-import org.apache.dubbo.samples.echo.api.DemoService;
 
-public class DemoServiceImpl implements DemoService {
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class EchoHelloServiceImpl implements HelloService {
 
     public String sayHello(String name) {
         System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] Hello " + name + ", request from consumer: " + RpcContext
diff --git a/dubbo-samples-echo/src/main/resources/spring/echo-consumer.xml b/dubbo-samples-echo/src/main/resources/spring/echo-consumer.xml
index c0fef2f..a18cc57 100644
--- a/dubbo-samples-echo/src/main/resources/spring/echo-consumer.xml
+++ b/dubbo-samples-echo/src/main/resources/spring/echo-consumer.xml
@@ -31,6 +31,6 @@
 
     <!-- generate proxy for the remote service, then demoService can be used in the same way as the
     local regular interface -->
-    <dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.samples.echo.api.DemoService"/>
+    <dubbo:reference id="helloService" check="false" interface="org.apache.dubbo.samples.api.client.HelloService"/>
 
-</beans>
\ No newline at end of file
+</beans>
diff --git a/dubbo-samples-echo/src/main/resources/spring/echo-provider.xml b/dubbo-samples-echo/src/main/resources/spring/echo-provider.xml
index b840950..1096080 100644
--- a/dubbo-samples-echo/src/main/resources/spring/echo-provider.xml
+++ b/dubbo-samples-echo/src/main/resources/spring/echo-provider.xml
@@ -32,9 +32,9 @@
     <dubbo:protocol name="dubbo" port="20890"/>
 
     <!-- service implementation, as same as regular local bean -->
-    <bean id="demoService" class="org.apache.dubbo.samples.echo.impl.DemoServiceImpl"/>
+    <bean id="echoHelloService" class="org.apache.dubbo.samples.echo.impl.EchoHelloServiceImpl"/>
 
     <!-- declare the service interface to be exported -->
-    <dubbo:service interface="org.apache.dubbo.samples.echo.api.DemoService" ref="demoService"/>
+    <dubbo:service interface="org.apache.dubbo.samples.api.client.HelloService" ref="echoHelloService"/>
 
-</beans>
\ No newline at end of file
+</beans>
diff --git a/dubbo-samples-generic/pom.xml b/dubbo-samples-generic/pom.xml
index 5ac3114..6a56727 100644
--- a/dubbo-samples-generic/pom.xml
+++ b/dubbo-samples-generic/pom.xml
@@ -19,13 +19,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-generic</artifactId>
 
-</project>
\ No newline at end of file
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-group/pom.xml b/dubbo-samples-group/pom.xml
index 1a28fb1..0d94d28 100644
--- a/dubbo-samples-group/pom.xml
+++ b/dubbo-samples-group/pom.xml
@@ -19,13 +19,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-group</artifactId>
 
-</project>
\ No newline at end of file
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-http/pom.xml b/dubbo-samples-http/pom.xml
index 0664877..e56ca7d 100644
--- a/dubbo-samples-http/pom.xml
+++ b/dubbo-samples-http/pom.xml
@@ -19,22 +19,128 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-http</artifactId>
 
     <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+
         <tomcat.version>7.0.88</tomcat.version>
         <servlet.version>3.0.1</servlet.version>
     </properties>
 
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
     <dependencies>
         <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency><dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-web</artifactId>
         </dependency>
@@ -55,4 +161,118 @@
         </dependency>
     </dependencies>
 
-</project>
\ No newline at end of file
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/dubbo-samples-local/pom.xml b/dubbo-samples-local/pom.xml
index 9354ecb..ce6c20f 100644
--- a/dubbo-samples-local/pom.xml
+++ b/dubbo-samples-local/pom.xml
@@ -18,13 +18,239 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-local</artifactId>
 
-</project>
\ No newline at end of file
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/dubbo-samples-merge/pom.xml b/dubbo-samples-merge/pom.xml
index 26455be..33bf370 100644
--- a/dubbo-samples-merge/pom.xml
+++ b/dubbo-samples-merge/pom.xml
@@ -19,13 +19,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-merge</artifactId>
 
-</project>
\ No newline at end of file
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-mock/pom.xml b/dubbo-samples-mock/pom.xml
index cbd42f7..3c40c96 100644
--- a/dubbo-samples-mock/pom.xml
+++ b/dubbo-samples-mock/pom.xml
@@ -19,14 +19,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-mock</artifactId>
 
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
 
-</project>
\ No newline at end of file
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-monitor/pom.xml b/dubbo-samples-monitor/pom.xml
index f2fa834..0c21495 100644
--- a/dubbo-samples-monitor/pom.xml
+++ b/dubbo-samples-monitor/pom.xml
@@ -19,14 +19,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-monitor</artifactId>
 
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
 
-</project>
\ No newline at end of file
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-multi-registry/pom.xml b/dubbo-samples-multi-registry/pom.xml
index 4a54877..2318e92 100644
--- a/dubbo-samples-multi-registry/pom.xml
+++ b/dubbo-samples-multi-registry/pom.xml
@@ -19,13 +19,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-multi-registry</artifactId>
 
-</project>
\ No newline at end of file
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-notify/pom.xml b/dubbo-samples-notify/pom.xml
index 2f9fbeb..3edfce4 100644
--- a/dubbo-samples-notify/pom.xml
+++ b/dubbo-samples-notify/pom.xml
@@ -19,13 +19,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-notify</artifactId>
 
-</project>
\ No newline at end of file
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-rest/pom.xml b/dubbo-samples-rest/pom.xml
index b07e995..8945905 100644
--- a/dubbo-samples-rest/pom.xml
+++ b/dubbo-samples-rest/pom.xml
@@ -19,17 +19,125 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
     <packaging>war</packaging>
     <artifactId>dubbo-samples-rest</artifactId>
 
+
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
     <dependencies>
         <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency><dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>hessian-lite</artifactId>
             <version>3.2.4</version>
@@ -71,5 +179,117 @@
         </dependency>
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
 
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
 </project>
diff --git a/dubbo-samples-scala/pom.xml b/dubbo-samples-scala/pom.xml
index caf09b4..8e5751b 100644
--- a/dubbo-samples-scala/pom.xml
+++ b/dubbo-samples-scala/pom.xml
@@ -19,21 +19,126 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-scala</artifactId>
 
     <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
         <scala.version>2.12.5</scala.version>
     </properties>
 
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
     <dependencies>
         <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency><dependency>
             <groupId>org.scala-lang</groupId>
             <artifactId>scala-library</artifactId>
             <version>${scala.version}</version>
@@ -44,6 +149,64 @@
         <sourceDirectory>src/main/scala</sourceDirectory>
         <plugins>
             <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
                 <groupId>net.alchim31.maven</groupId>
                 <artifactId>scala-maven-plugin</artifactId>
                 <version>3.3.3</version>
@@ -72,5 +235,56 @@
                 </configuration>
             </plugin>
         </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
     </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
 </project>
diff --git a/dubbo-samples-spring-boot-hystrix/pom.xml b/dubbo-samples-spring-boot-hystrix/pom.xml
index bd8be16..077d9fb 100644
--- a/dubbo-samples-spring-boot-hystrix/pom.xml
+++ b/dubbo-samples-spring-boot-hystrix/pom.xml
@@ -19,21 +19,126 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-spring-boot-hystrix</artifactId>
 
     <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
         <main-class>com.alibaba.dubbo.spring.boot.provider.ProviderApplication</main-class>
     </properties>
 
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
     <dependencies>
         <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency><dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
             <version>1.4.4.RELEASE</version>
@@ -60,6 +165,64 @@
     <build>
         <plugins>
             <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <configuration>
@@ -75,6 +238,57 @@
                 </executions>
             </plugin>
         </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
     </build>
 
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
 </project>
diff --git a/dubbo-samples-spring-hystrix/pom.xml b/dubbo-samples-spring-hystrix/pom.xml
index 5cb3ec9..5e58eaa 100644
--- a/dubbo-samples-spring-hystrix/pom.xml
+++ b/dubbo-samples-spring-hystrix/pom.xml
@@ -19,22 +19,127 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-spring-hystrix</artifactId>
 
+
     <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
         <hystrix.version>1.5.12</hystrix.version>
     </properties>
 
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency><dependency>
             <groupId>com.netflix.hystrix</groupId>
             <artifactId>hystrix-core</artifactId>
             <version>${hystrix.version}</version>
@@ -54,6 +159,119 @@
             <artifactId>hystrix-javanica</artifactId>
             <version>${hystrix.version}</version>
         </dependency>
-
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
 </project>
diff --git a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/AnnotationConsumer.java b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/AnnotationConsumer.java
index 91be0ff..e33e4bc 100644
--- a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/AnnotationConsumer.java
+++ b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/AnnotationConsumer.java
@@ -19,10 +19,10 @@
 
 package org.apache.dubbo.samples.annotation;
 
-import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
 import org.apache.dubbo.samples.annotation.action.AnnotationAction;
-import com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect;
 
+import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
+import com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect;
 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
@@ -39,8 +39,21 @@ public class AnnotationConsumer {
         AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConsumerConfiguration.class);
         context.start();
         final AnnotationAction annotationAction = (AnnotationAction) context.getBean("annotationAction");
-        String hello = annotationAction.doSayHello("world");
-        System.err.println("result :" + hello);
+        System.err.println("usual ---:" + annotationAction.doSayUsual("world"));
+        System.err.println("provider ---:" + annotationAction.doSayProvider("world"));
+        System.err.println("consumer ---:" + annotationAction.doSayConsumer("world"));
+        System.err.println("usual2 ---:" + annotationAction.doSayUsual2("world"));
+
+        try {
+            System.err.println("provider2 ---:" + annotationAction.doSayProvider2("world"));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        try {
+            System.err.println("consumer2 ---:" + annotationAction.doSayConsumer2("world"));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
         System.in.read();
     }
 
diff --git a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/AnnotationProvider.java b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/AnnotationProvider.java
index 18b5a30..88558f6 100644
--- a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/AnnotationProvider.java
+++ b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/AnnotationProvider.java
@@ -22,7 +22,6 @@ package org.apache.dubbo.samples.annotation;
 import com.alibaba.dubbo.config.ProviderConfig;
 import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
 import com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect;
-
 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
diff --git a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/action/AnnotationAction.java b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/action/AnnotationAction.java
index 00b3927..443a049 100644
--- a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/action/AnnotationAction.java
+++ b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/action/AnnotationAction.java
@@ -19,10 +19,10 @@
 
 package org.apache.dubbo.samples.annotation.action;
 
-import com.alibaba.dubbo.config.annotation.Reference;
 import org.apache.dubbo.samples.annotation.api.AnnotationService;
-import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
 
+import com.alibaba.dubbo.config.annotation.Method;
+import com.alibaba.dubbo.config.annotation.Reference;
 import org.springframework.stereotype.Component;
 
 /**
@@ -34,13 +34,39 @@ public class AnnotationAction {
     @Reference
     private AnnotationService annotationService;
 
-    @HystrixCommand(fallbackMethod = "reliable")
+    @Reference(version = "2.0.0", methods = {@Method(name = "testConsumer", timeout = 200)})
+    private AnnotationService annotationService2;
+
+    //    @HystrixCommand(fallbackMethod = "reliable")
     public String doSayHello(String name) {
         return annotationService.sayHello(name);
     }
 
-    public String reliable(String name) {
-        return "hystrix fallback value";
+    public String doSayProvider(String name) {
+        return annotationService.testProvider(name);
+    }
+
+    public String doSayConsumer(String name) {
+        return annotationService.testConsumer(name);
+    }
+
+    public String doSayUsual(String name) {
+        return annotationService.testUsual(name);
     }
 
+    public String doSayHello2(String name) {
+        return annotationService2.sayHello(name);
+    }
+
+    public String doSayProvider2(String name) {
+        return annotationService2.testProvider(name);
+    }
+
+    public String doSayConsumer2(String name) {
+        return annotationService2.testConsumer(name);
+    }
+
+    public String doSayUsual2(String name) {
+        return annotationService2.testUsual(name);
+    }
 }
diff --git a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/api/AnnotationService.java b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/api/AnnotationService.java
index 83ebe34..26d60e7 100644
--- a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/api/AnnotationService.java
+++ b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/api/AnnotationService.java
@@ -26,4 +26,10 @@ public interface AnnotationService {
 
     String sayHello(String name);
 
+    String testProvider(String name);
+
+    String testConsumer(String name);
+
+    String testUsual(String name);
+
 }
diff --git a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationServiceImpl.java b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationService2Impl.java
similarity index 52%
copy from dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationServiceImpl.java
copy to dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationService2Impl.java
index d3d6868..beb751b 100644
--- a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationServiceImpl.java
+++ b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationService2Impl.java
@@ -19,19 +19,21 @@
 
 package org.apache.dubbo.samples.annotation.impl;
 
-import com.alibaba.dubbo.config.annotation.Service;
 import org.apache.dubbo.samples.annotation.api.AnnotationService;
-import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
-import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
+
+import com.alibaba.dubbo.config.annotation.Method;
+import com.alibaba.dubbo.config.annotation.Service;
+//import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
+//import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
 
 /**
  * AsyncServiceImpl
  */
-@Service
-public class AnnotationServiceImpl implements AnnotationService {
+@Service(version = "2.0.0", methods = {@Method(name = "testProvider", retries = 0)})
+public class AnnotationService2Impl implements AnnotationService {
 
-    @HystrixCommand(commandProperties = { @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),
-                    @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000") })
+    //    @HystrixCommand(commandProperties = { @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),
+//                    @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000") })
     @Override
     public String sayHello(String name) {
 //        System.out.println("async provider received: " + name);
@@ -39,4 +41,29 @@ public class AnnotationServiceImpl implements AnnotationService {
         throw new RuntimeException("Exception to show hystrix enabled.");
     }
 
+    @Override
+    public String testProvider(String name) {
+        try {
+            Thread.sleep(5000);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        return "provider2 :" + name;
+    }
+
+    @Override
+    public String testConsumer(String name) {
+        try {
+            Thread.sleep(300);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        return "consumer2 :" + name;
+    }
+
+    @Override
+    public String testUsual(String name) {
+        return "usual2 :" + name;
+    }
+
 }
diff --git a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationServiceImpl.java b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationServiceImpl.java
index d3d6868..40f8c08 100644
--- a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationServiceImpl.java
+++ b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationServiceImpl.java
@@ -20,9 +20,10 @@
 package org.apache.dubbo.samples.annotation.impl;
 
 import com.alibaba.dubbo.config.annotation.Service;
+
 import org.apache.dubbo.samples.annotation.api.AnnotationService;
-import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
-import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
+//import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
+//import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
 
 /**
  * AsyncServiceImpl
@@ -30,8 +31,8 @@ import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
 @Service
 public class AnnotationServiceImpl implements AnnotationService {
 
-    @HystrixCommand(commandProperties = { @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),
-                    @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000") })
+    //    @HystrixCommand(commandProperties = { @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),
+//                    @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000") })
     @Override
     public String sayHello(String name) {
 //        System.out.println("async provider received: " + name);
@@ -39,4 +40,24 @@ public class AnnotationServiceImpl implements AnnotationService {
         throw new RuntimeException("Exception to show hystrix enabled.");
     }
 
+    @Override
+    public String testProvider(String name) {
+        return "provider :" + name;
+    }
+
+    @Override
+    public String testConsumer(String name) {
+        try {
+            Thread.sleep(300);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        return "consumer :" + name;
+    }
+
+    @Override
+    public String testUsual(String name) {
+        return "usual :" + name;
+    }
+
 }
diff --git a/dubbo-samples-stub/pom.xml b/dubbo-samples-stub/pom.xml
index 454d5ed..a9fa0fc 100644
--- a/dubbo-samples-stub/pom.xml
+++ b/dubbo-samples-stub/pom.xml
@@ -19,13 +19,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-stub</artifactId>
 
-</project>
\ No newline at end of file
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-switch-serialization-thread/pom.xml b/dubbo-samples-switch-serialization-thread/pom.xml
index ef9a409..a9ba853 100644
--- a/dubbo-samples-switch-serialization-thread/pom.xml
+++ b/dubbo-samples-switch-serialization-thread/pom.xml
@@ -18,12 +18,238 @@
 
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-switch-serialization-thread</artifactId>
+
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
 </project>
diff --git a/dubbo-samples-validation/pom.xml b/dubbo-samples-validation/pom.xml
index 4eefb00..301c7ab 100644
--- a/dubbo-samples-validation/pom.xml
+++ b/dubbo-samples-validation/pom.xml
@@ -19,17 +19,125 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-validation</artifactId>
 
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
     <dependencies>
         <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency><dependency>
             <groupId>javax.validation</groupId>
             <artifactId>validation-api</artifactId>
         </dependency>
@@ -39,4 +147,117 @@
         </dependency>
     </dependencies>
 
-</project>
\ No newline at end of file
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-version/pom.xml b/dubbo-samples-version/pom.xml
index 4227ccb..5520524 100644
--- a/dubbo-samples-version/pom.xml
+++ b/dubbo-samples-version/pom.xml
@@ -19,13 +19,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-version</artifactId>
 
-</project>
\ No newline at end of file
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-zipkin/pom.xml b/dubbo-samples-zipkin/pom.xml
index 002d36d..402d080 100644
--- a/dubbo-samples-zipkin/pom.xml
+++ b/dubbo-samples-zipkin/pom.xml
@@ -28,6 +28,20 @@
     <artifactId>dubbo-samples-zipkin</artifactId>
 
     <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
         <brave.version>5.4.2</brave.version>
         <zipkin-reporter.version>2.7.9</zipkin-reporter.version>
     </properties>
@@ -35,6 +49,21 @@
     <dependencyManagement>
         <dependencies>
             <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
                 <groupId>io.zipkin.brave</groupId>
                 <artifactId>brave-bom</artifactId>
                 <version>${brave.version}</version>
@@ -49,11 +78,85 @@
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
+
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency><dependency>
             <groupId>io.zipkin.brave</groupId>
             <artifactId>brave-instrumentation-dubbo-rpc</artifactId>
         </dependency>
@@ -74,4 +177,118 @@
         </dependency>
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
 </project>
diff --git a/dubbo-samples-zookeeper/pom.xml b/dubbo-samples-zookeeper/pom.xml
index 2ff76d4..1af8b55 100644
--- a/dubbo-samples-zookeeper/pom.xml
+++ b/dubbo-samples-zookeeper/pom.xml
@@ -18,14 +18,238 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>dubbo-samples-all</artifactId>
-        <groupId>org.apache.dubbo</groupId>
-        <version>1.0-SNAPSHOT</version>
-    </parent>
     <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.dubbo</groupId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>jar</packaging>
 
     <artifactId>dubbo-samples-zookeeper</artifactId>
 
+    <properties>
+        <source.level>1.8</source.level>
+        <target.level>1.8</target.level>
+        <spring.version>4.3.16.RELEASE</spring.version>
+        <dubbo.version>2.6.6-SNAPSHOT</dubbo.version>
+        <dubbo.rpc.version>2.6.6-SNAPSHOT</dubbo.rpc.version>
+        <curator.version>2.12.0</curator.version>
+        <validation-api.version>1.1.0.Final</validation-api.version>
+        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
+        <resteasy.version>3.0.19.Final</resteasy.version>
+        <curator-client.version>2.12.0</curator-client.version>
+        <swagger.version>1.5.19</swagger.version>
+        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
+        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
+        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
+    </properties>
 
-</project>
\ No newline at end of file
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework</groupId>
+                <artifactId>spring-framework-bom</artifactId>
+                <version>${spring.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <!-- Import dependency management from Spring Boot -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>io.netty</groupId>
+                <artifactId>netty-all</artifactId>
+                <version>4.1.16.Final</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo</artifactId>
+                <version>${dubbo.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>dubbo-rpc-rest</artifactId>
+                <version>${dubbo.rpc.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-framework</artifactId>
+                <version>${curator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>javax.validation</groupId>
+                <artifactId>validation-api</artifactId>
+                <version>${validation-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.hibernate</groupId>
+                <artifactId>hibernate-validator</artifactId>
+                <version>${hibernate-validator.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jboss.resteasy</groupId>
+                <artifactId>resteasy-jackson-provider</artifactId>
+                <version>${resteasy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.curator</groupId>
+                <artifactId>curator-client</artifactId>
+                <version>${curator-client.version}</version>
+            </dependency>
+            <!-- swagger -->
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-annotations</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.swagger</groupId>
+                <artifactId>swagger-jaxrs</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-framework</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>dubbo</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-samples-api-client</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>${source.level}</source>
+                    <target>${target.level}</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <version>${apache-rat-plugin.version}</version>
+                <executions>
+                    <execution>
+                        <id>verify.rat</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <exclude>**/*.versionsBackup</exclude>
+                                <exclude>**/.idea/</exclude>
+                                <exclude>**/*.iml</exclude>
+                                <exclude>**/*.txt</exclude>
+                                <exclude>**/*.load</exclude>
+                                <exclude>**/*.flex</exclude>
+                                <exclude>**/*.fc</exclude>
+                                <exclude>**/*.javascript</exclude>
+                                <exclude>**/*.properties</exclude>
+                                <exclude>**/*.thrift</exclude>
+                                <exclude>**/*.sh</exclude>
+                                <exclude>**/*.bat</exclude>
+                                <exclude>**/*.md</exclude>
+                                <exclude>.git/</exclude>
+                                <exclude>.gitignore</exclude>
+                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
+                                <exclude>.repository/</exclude>
+                                <exclude>**/.settings/*</exclude>
+                                <exclude>**/.classpath</exclude>
+                                <exclude>**/.project</exclude>
+                                <exclude>**/target/**</exclude>
+                                <exclude>**/*.log</exclude>
+                                <exclude>CODE_OF_CONDUCT.md</exclude>
+                                <exclude>.codecov.yml</exclude>
+                                <exclude>.travis.yml</exclude>
+                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
+                                <exclude>CONTRIBUTING.md</exclude>
+                                <exclude>README.md</exclude>
+                                <exclude>**/codestyle/*</exclude>
+                                <exclude>**/resources/META-INF/**</exclude>
+                                <exclude>**/webapp/swagger/**</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-maven-plugin</artifactId>
+                    <version>${spring-boot.version}</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>checkstyle</id>
+            <activation>
+                <jdk>[1.8,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-checkstyle-plugin</artifactId>
+                        <version>${maven_checkstyle_version}</version>
+                        <dependencies>
+                            <dependency>
+                                <groupId>com.puppycrawl.tools</groupId>
+                                <artifactId>checkstyle</artifactId>
+                                <version>8.9</version>
+                            </dependency>
+                        </dependencies>
+                        <executions>
+                            <execution>
+                                <id>checkstyle-validation</id>
+                                <phase>validate</phase>
+                                <configuration>
+                                    <!-- just for style check -->
+                                    <configLocation>../codestyle/checkstyle.xml</configLocation>
+                                    <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation>
+                                    <encoding>UTF-8</encoding>
+                                    <consoleOutput>true</consoleOutput>
+                                    <failOnViolation>true</failOnViolation>
+                                </configuration>
+                                <goals>
+                                    <goal>check</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/ConsumerBootstrap.java b/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/zookeeper/ZookeeperConsumerBootstrap.java
similarity index 83%
rename from dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/ConsumerBootstrap.java
rename to dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/zookeeper/ZookeeperConsumerBootstrap.java
index fc0368f..9cffcb7 100644
--- a/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/ConsumerBootstrap.java
+++ b/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/zookeeper/ZookeeperConsumerBootstrap.java
@@ -17,10 +17,11 @@
  *
  */
 
-package org.apache.dubbo.samples;
+package org.apache.dubbo.samples.zookeeper;
+
+import org.apache.dubbo.samples.zookeeper.action.ZookeeperHelloServiceConsumer;
 
 import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.apache.dubbo.samples.action.GreetingServiceConsumer;
 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
@@ -28,12 +29,12 @@ import org.springframework.context.annotation.PropertySource;
 
 import java.io.IOException;
 
-public class ConsumerBootstrap {
+public class ZookeeperConsumerBootstrap {
 
     public static void main(String[] args) throws IOException {
         AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConsumerConfiguration.class);
         context.start();
-        GreetingServiceConsumer greetingServiceConsumer = context.getBean(GreetingServiceConsumer.class);
+        ZookeeperHelloServiceConsumer greetingServiceConsumer = context.getBean(ZookeeperHelloServiceConsumer.class);
         String hello = greetingServiceConsumer.doSayHello("zookeeper");
         System.out.println("result: " + hello);
         System.in.read();
@@ -42,7 +43,7 @@ public class ConsumerBootstrap {
     @Configuration
     @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.action")
     @PropertySource("classpath:/spring/dubbo-consumer.properties")
-    @ComponentScan(value = {"org.apache.dubbo.samples.action"})
+    @ComponentScan(value = {"org.apache.dubbo.samples.zookeeper.action"})
     static class ConsumerConfiguration {
 
     }
diff --git a/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/ProviderBootstrap.java b/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/zookeeper/ZookeeperProviderBootstrap.java
similarity index 90%
rename from dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/ProviderBootstrap.java
rename to dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/zookeeper/ZookeeperProviderBootstrap.java
index 4d104ba..60c95bc 100644
--- a/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/ProviderBootstrap.java
+++ b/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/zookeeper/ZookeeperProviderBootstrap.java
@@ -17,14 +17,14 @@
  *
  */
 
-package org.apache.dubbo.samples;
+package org.apache.dubbo.samples.zookeeper;
 
 import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.PropertySource;
 
-public class ProviderBootstrap {
+public class ZookeeperProviderBootstrap {
 
     public static void main(String[] args) throws Exception {
         AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ProviderConfiguration.class);
@@ -33,7 +33,7 @@ public class ProviderBootstrap {
     }
 
     @Configuration
-    @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.impl")
+    @EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.zookeeper.impl")
     @PropertySource("classpath:/spring/dubbo-provider.properties")
     static class ProviderConfiguration {
     }
diff --git a/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/action/GreetingServiceConsumer.java b/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/zookeeper/action/ZookeeperHelloServiceConsumer.java
similarity index 81%
rename from dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/action/GreetingServiceConsumer.java
rename to dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/zookeeper/action/ZookeeperHelloServiceConsumer.java
index 86e9d61..2e9d365 100644
--- a/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/action/GreetingServiceConsumer.java
+++ b/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/zookeeper/action/ZookeeperHelloServiceConsumer.java
@@ -17,20 +17,21 @@
  *
  */
 
-package org.apache.dubbo.samples.action;
+package org.apache.dubbo.samples.zookeeper.action;
+
+import org.apache.dubbo.samples.api.client.HelloService;
 
 import com.alibaba.dubbo.config.annotation.Reference;
-import org.apache.dubbo.samples.api.GreetingService;
 import org.springframework.stereotype.Component;
 
 @Component("annotatedConsumer")
-public class GreetingServiceConsumer {
+public class ZookeeperHelloServiceConsumer {
 
     @Reference
-    private GreetingService greetingService;
+    private HelloService helloService;
 
     public String doSayHello(String name) {
-        return greetingService.sayHello(name);
+        return helloService.sayHello(name);
     }
 
 }
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/impl/AnnotatedGreetingService.java b/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/zookeeper/impl/ZookeeperHelloServiceImpl.java
similarity index 85%
rename from dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/impl/AnnotatedGreetingService.java
rename to dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/zookeeper/impl/ZookeeperHelloServiceImpl.java
index 76df11a..8740f79 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/impl/AnnotatedGreetingService.java
+++ b/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/zookeeper/impl/ZookeeperHelloServiceImpl.java
@@ -17,13 +17,14 @@
  *
  */
 
-package org.apache.dubbo.samples.impl;
+package org.apache.dubbo.samples.zookeeper.impl;
+
+import org.apache.dubbo.samples.api.client.HelloService;
 
 import com.alibaba.dubbo.config.annotation.Service;
-import org.apache.dubbo.samples.api.GreetingService;
 
 @Service
-public class AnnotatedGreetingService implements GreetingService {
+public class ZookeeperHelloServiceImpl implements HelloService {
 
     public String sayHello(String name) {
         System.out.println("greeting service received: " + name);
diff --git a/dubbo-samples-zookeeper/src/main/resources/spring/dubbo-consumer.properties b/dubbo-samples-zookeeper/src/main/resources/spring/dubbo-consumer.properties
index be31a3c..a07a5b9 100644
--- a/dubbo-samples-zookeeper/src/main/resources/spring/dubbo-consumer.properties
+++ b/dubbo-samples-zookeeper/src/main/resources/spring/dubbo-consumer.properties
@@ -6,19 +6,21 @@
 #   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.
-#  
+#
 #
 
 dubbo.application.name=demo-consumer
 # find out environment variable $DOCKER_HOST is and use its IP for zookeeper address if you are
 # running zookeeper in docker.
 dubbo.registry.address=zookeeper://$DOCKER_HOST:2181
-dubbo.consumer.timeout=3000
\ No newline at end of file
+#dubbo.registry.address=zookeeper://127.0.0.1:2181
+dubbo.consumer.timeout=3000
+dubbo.application.qos.port=33333
diff --git a/dubbo-samples-zookeeper/src/main/resources/spring/dubbo-provider.properties b/dubbo-samples-zookeeper/src/main/resources/spring/dubbo-provider.properties
index 8a9cdfe..d8e7822 100644
--- a/dubbo-samples-zookeeper/src/main/resources/spring/dubbo-provider.properties
+++ b/dubbo-samples-zookeeper/src/main/resources/spring/dubbo-provider.properties
@@ -6,20 +6,22 @@
 #   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.
-#  
+#
 #
 
 dubbo.application.name=demo-provider
 # find out environment variable $DOCKER_HOST is and use its IP for zookeeper address if you are
 # running zookeeper in docker.
 dubbo.registry.address=zookeeper://$DOCKER_HOST:2181
+#dubbo.registry.address=zookeeper://127.0.0.1:2181
 dubbo.protocol.name=dubbo
-dubbo.protocol.port=20880
\ No newline at end of file
+dubbo.protocol.port=20880
+dubbo.application.qos.port=20881
diff --git a/pom.xml b/pom.xml
index f6db953..08960ae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,6 +26,7 @@
     <version>1.0-SNAPSHOT</version>
     <modules>
         <module>dubbo-samples-annotation</module>
+        <module>dubbo-samples-api-client</module>
         <module>dubbo-samples-async</module>
         <module>dubbo-samples-attachment</module>
         <module>dubbo-samples-basic</module>
@@ -45,7 +46,7 @@
         <module>dubbo-samples-docker</module>
         <module>dubbo-samples-context</module>
         <module>dubbo-samples-http</module>
-        <module>dubbo-samples-api</module>
+        <module>dubbo-samples-api-invoker</module>
         <module>dubbo-samples-spring-hystrix</module>
         <module>dubbo-samples-spring-boot-hystrix</module>
         <module>dubbo-samples-monitor</module>
@@ -57,225 +58,4 @@
         <module>dubbo-samples-local</module>
     </modules>
 
-    <properties>
-        <source.level>1.8</source.level>
-        <target.level>1.8</target.level>
-        <spring.version>4.3.16.RELEASE</spring.version>
-        <dubbo.version>2.6.4</dubbo.version>
-        <dubbo.rpc.version>2.6.4</dubbo.rpc.version>
-        <curator.version>2.12.0</curator.version>
-        <validation-api.version>1.1.0.Final</validation-api.version>
-        <hibernate-validator.version>4.2.0.Final</hibernate-validator.version>
-        <resteasy.version>3.0.19.Final</resteasy.version>
-        <curator-client.version>2.12.0</curator-client.version>
-        <swagger.version>1.5.19</swagger.version>
-        <spring-boot.version>1.5.13.RELEASE</spring-boot.version>
-        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
-        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
-    </properties>
-
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>org.springframework</groupId>
-                <artifactId>spring-framework-bom</artifactId>
-                <version>${spring.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-            <dependency>
-                <!-- Import dependency management from Spring Boot -->
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-dependencies</artifactId>
-                <version>${spring-boot.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-            <dependency>
-                <groupId>io.netty</groupId>
-                <artifactId>netty-all</artifactId>
-                <version>4.1.16.Final</version>
-            </dependency>
-            <dependency>
-                <groupId>com.alibaba</groupId>
-                <artifactId>dubbo</artifactId>
-                <version>${dubbo.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.alibaba</groupId>
-                <artifactId>dubbo-rpc-rest</artifactId>
-                <version>${dubbo.rpc.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.curator</groupId>
-                <artifactId>curator-framework</artifactId>
-                <version>${curator.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>javax.validation</groupId>
-                <artifactId>validation-api</artifactId>
-                <version>${validation-api.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.hibernate</groupId>
-                <artifactId>hibernate-validator</artifactId>
-                <version>${hibernate-validator.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.jboss.resteasy</groupId>
-                <artifactId>resteasy-jackson-provider</artifactId>
-                <version>${resteasy.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.curator</groupId>
-                <artifactId>curator-client</artifactId>
-                <version>${curator-client.version}</version>
-            </dependency>
-            <!-- swagger -->
... 147 lines suppressed ...


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org