You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2023/12/21 02:17:50 UTC

(dubbo) branch 3.3 updated: Revert dubbo module refactor (#13541)

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

albumenj pushed a commit to branch 3.3
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.3 by this push:
     new 36e0ee0a96 Revert dubbo module refactor (#13541)
36e0ee0a96 is described below

commit 36e0ee0a96d4b89af9bbb67a2adba7ca21ff0169
Author: huazhongming <cr...@gmail.com>
AuthorDate: Thu Dec 21 10:17:43 2023 +0800

    Revert dubbo module refactor (#13541)
    
    * Revert dubbo module refactor
    
    Signed-off-by: crazyhzm <cr...@gmail.com>
    
    * Revert dubbo module refactor
    
    Signed-off-by: crazyhzm <cr...@gmail.com>
    
    * Revert dubbo module refactor
    
    Signed-off-by: crazyhzm <cr...@gmail.com>
    
    ---------
    
    Signed-off-by: crazyhzm <cr...@gmail.com>
---
 .artifacts                                         |  14 -
 .../MergeableClusterScopeModelInitializer.java     |   0
 .../support/CallbackConsumerContextFilter.java     |   0
 .../filter/support/ConsumerClassLoaderFilter.java  |   0
 .../filter/support/ConsumerContextFilter.java      |   0
 .../cluster/loadbalance/AdaptiveLoadBalance.java   |   0
 .../dubbo/rpc/cluster/merger/ArrayMerger.java      |   0
 .../rpc/cluster/merger/BooleanArrayMerger.java     |   0
 .../dubbo/rpc/cluster/merger/ByteArrayMerger.java  |   0
 .../dubbo/rpc/cluster/merger/CharArrayMerger.java  |   0
 .../rpc/cluster/merger/DoubleArrayMerger.java      |   0
 .../dubbo/rpc/cluster/merger/FloatArrayMerger.java |   0
 .../dubbo/rpc/cluster/merger/IntArrayMerger.java   |   0
 .../dubbo/rpc/cluster/merger/ListMerger.java       |   0
 .../dubbo/rpc/cluster/merger/LongArrayMerger.java  |   0
 .../apache/dubbo/rpc/cluster/merger/MapMerger.java |   0
 .../dubbo/rpc/cluster/merger/MergerFactory.java    |   0
 .../apache/dubbo/rpc/cluster/merger/SetMerger.java |   0
 .../dubbo/rpc/cluster/merger/ShortArrayMerger.java |   0
 .../router/condition/ConditionStateRouter.java     |   0
 .../condition/ConditionStateRouterFactory.java     |   0
 .../router/condition/config/AppStateRouter.java    |   0
 .../condition/config/AppStateRouterFactory.java    |   0
 .../condition/config/ListenableStateRouter.java    |   0
 .../condition/config/ProviderAppStateRouter.java   |   0
 .../config/ProviderAppStateRouterFactory.java      |   0
 .../condition/config/ServiceStateRouter.java       |   0
 .../config/ServiceStateRouterFactory.java          |   0
 .../config/model/ConditionRouterRule.java          |   0
 .../config/model/ConditionRuleParser.java          |   0
 .../matcher/AbstractConditionMatcher.java          |   0
 .../router/condition/matcher/ConditionMatcher.java |   0
 .../condition/matcher/ConditionMatcherFactory.java |   0
 .../matcher/argument/ArgumentConditionMatcher.java |   0
 .../argument/ArgumentConditionMatcherFactory.java  |   0
 .../attachment/AttachmentConditionMatcher.java     |   0
 .../AttachmentConditionMatcherFactory.java         |   0
 .../matcher/param/UrlParamConditionMatcher.java    |   0
 .../param/UrlParamConditionMatcherFactory.java     |   0
 .../condition/matcher/pattern/ValuePattern.java    |   0
 .../matcher/pattern/range/RangeValuePattern.java   |   0
 .../pattern/wildcard/WildcardValuePattern.java     |   0
 .../router/file/FileStateRouterFactory.java        |   0
 .../router/mesh/MeshScopeModelInitializer.java     |   0
 .../router/mesh/route/MeshAppRuleListener.java     |   0
 .../cluster/router/mesh/route/MeshEnvListener.java |   0
 .../router/mesh/route/MeshEnvListenerFactory.java  |   0
 .../cluster/router/mesh/route/MeshRuleCache.java   |   0
 .../router/mesh/route/MeshRuleConstants.java       |   0
 .../cluster/router/mesh/route/MeshRuleManager.java |   0
 .../cluster/router/mesh/route/MeshRuleRouter.java  |   0
 .../router/mesh/route/StandardMeshRuleRouter.java  |   0
 .../mesh/route/StandardMeshRuleRouterFactory.java  |   0
 .../rpc/cluster/router/mesh/rule/BaseRule.java     |   0
 .../router/mesh/rule/VsDestinationGroup.java       |   0
 .../rule/destination/ConnectionPoolSettings.java   |   0
 .../mesh/rule/destination/DestinationRule.java     |   0
 .../mesh/rule/destination/DestinationRuleSpec.java |   0
 .../router/mesh/rule/destination/Subset.java       |   0
 .../router/mesh/rule/destination/TCPSettings.java  |   0
 .../router/mesh/rule/destination/TcpKeepalive.java |   0
 .../mesh/rule/destination/TrafficPolicy.java       |   0
 .../destination/loadbalance/ConsistentHashLB.java  |   0
 .../loadbalance/LoadBalancerSettings.java          |   0
 .../rule/destination/loadbalance/SimpleLB.java     |   0
 .../rule/virtualservice/DubboMatchRequest.java     |   0
 .../mesh/rule/virtualservice/DubboRoute.java       |   0
 .../mesh/rule/virtualservice/DubboRouteDetail.java |   0
 .../rule/virtualservice/VirtualServiceRule.java    |   0
 .../rule/virtualservice/VirtualServiceSpec.java    |   0
 .../destination/DubboDestination.java              |   0
 .../destination/DubboRouteDestination.java         |   0
 .../virtualservice/match/DubboAttachmentMatch.java |   0
 .../router/mesh/util/MeshRuleDispatcher.java       |   0
 .../cluster/router/mesh/util/MeshRuleListener.java |   0
 .../router/mesh/util/TracingContextProvider.java   |   0
 .../cluster/router/mock/MockInvokersSelector.java  |   0
 .../router/mock/MockStateRouterFactory.java        |   0
 .../cluster/router/script/ScriptStateRouter.java   |   0
 .../router/script/ScriptStateRouterFactory.java    |   0
 .../script/config/AppScriptRouterFactory.java      |   0
 .../router/script/config/AppScriptStateRouter.java |   0
 .../router/script/config/model/ScriptRule.java     |   0
 .../rpc/cluster/router/tag/TagStateRouter.java     |   0
 .../cluster/router/tag/TagStateRouterFactory.java  |   0
 .../rpc/cluster/router/tag/model/ParamMatch.java   |   0
 .../dubbo/rpc/cluster/router/tag/model/Tag.java    |   0
 .../cluster/router/tag/model/TagRouterRule.java    |   0
 .../cluster/router/tag/model/TagRuleParser.java    |   0
 .../rpc/cluster/support/MergeableCluster.java      |   0
 .../cluster/support/MergeableClusterInvoker.java   |   0
 .../support/wrapper/MockClusterInvoker.java        |   0
 .../support/wrapper/MockClusterWrapper.java        |   0
 .../dubbo/internal/org.apache.dubbo.rpc.Filter     |   1 -
 .../internal/org.apache.dubbo.rpc.cluster.Cluster  |   2 +
 .../org.apache.dubbo.rpc.cluster.LoadBalance       |   1 +
 .../internal/org.apache.dubbo.rpc.cluster.Merger   |   0
 ...g.apache.dubbo.rpc.cluster.filter.ClusterFilter |   2 +
 ...outer.condition.matcher.ConditionMatcherFactory |   1 -
 ...r.router.condition.matcher.pattern.ValuePattern |   0
 ...bbo.rpc.cluster.router.state.StateRouterFactory |   4 +
 ...rg.apache.dubbo.rpc.model.ScopeModelInitializer |   2 +
 .../rpc/cluster/directory/MockDirInvocation.java   |   0
 .../rpc/cluster/directory/StaticDirectoryTest.java |   0
 .../loadbalance/AdaptiveLoadBalanceTest.java       |   0
 .../dubbo/rpc/cluster/merger/DoubleSumMerger.java  |   0
 .../dubbo/rpc/cluster/merger/FloatSumMerger.java   |   0
 .../dubbo/rpc/cluster/merger/IntFindAnyMerger.java |   0
 .../rpc/cluster/merger/IntFindFirstMerger.java     |   0
 .../dubbo/rpc/cluster/merger/IntSumMerger.java     |   0
 .../dubbo/rpc/cluster/merger/LongSumMerger.java    |   0
 .../dubbo/rpc/cluster/merger/ResultMergerTest.java |   0
 .../cluster/router/ConfigConditionRouterTest.java  |   0
 .../router/condition/ConditionStateRouterTest.java |   0
 .../ProviderAppConditionStateRouterTest.java       |   0
 .../cluster/router/file/FileRouterEngineTest.java  |   0
 .../router/mesh/route/MeshAppRuleListenerTest.java |   0
 .../router/mesh/route/MeshRuleCacheTest.java       |   0
 .../router/mesh/route/MeshRuleManagerTest.java     |   0
 .../router/mesh/route/MeshRuleRouterTest.java      |   0
 .../route/StandardMeshRuleRouterFactoryTest.java   |   0
 .../router/mesh/rule/DestinationRuleTest.java      |   0
 .../router/mesh/rule/VirtualServiceRuleTest.java   |   0
 .../rule/virtualservice/DubboMatchRequestTest.java |   0
 .../match/DubboAttachmentMatchTest.java            |   0
 .../router/mesh/util/MeshRuleDispatcherTest.java   |   0
 .../router/mock/MockInvokersSelectorTest.java      |   0
 .../router/script/ScriptStateRouterTest.java       |   0
 .../script/config/AppScriptStateRouterTest.java    |   0
 .../rpc/cluster/router/tag/TagStateRouterTest.java |   0
 .../dubbo/rpc/cluster}/support/DemoServiceA.java   |   2 +-
 .../rpc/cluster}/support/DemoServiceAMock.java     |   2 +-
 .../dubbo/rpc/cluster}/support/DemoServiceB.java   |   2 +-
 .../rpc/cluster}/support/DemoServiceBMock.java     |   2 +-
 .../dubbo/rpc/cluster}/support/Greeting.java       |   2 +-
 .../dubbo/rpc/cluster}/support/GreetingMock1.java  |   2 +-
 .../dubbo/rpc/cluster}/support/GreetingMock2.java  |   2 +-
 .../org/apache/dubbo/rpc/cluster/support/Menu.java |   0
 .../dubbo/rpc/cluster/support/MenuService.java     |   0
 .../support/MergeableClusterInvokerTest.java       |   0
 .../support/MockAbstractClusterInvokerTest.java    |   3 +-
 .../rpc/cluster}/support/MockInvokerTest.java      |   6 +-
 .../support/wrapper/MockClusterInvokerTest.java    |   0
 .../wrapper/MockProviderRpcExceptionTest.java      |   2 +-
 .../cluster/support/wrapper/MyMockException.java   |   0
 .../src/test/resources/DestinationRuleTest.yaml    |   0
 .../src/test/resources/DestinationRuleTest2.yaml   |   0
 .../internal/org.apache.dubbo.rpc.cluster.Merger   |   0
 ...bbo.rpc.cluster.router.state.StateRouterFactory |   0
 .../src/test/resources/VirtualServiceTest.yaml     |   0
 .../cluster/router/file/availablerule.javascript   |   0
 .../rpc/cluster/router/file/methodrule.javascript  |   0
 .../router/file/notAvailablerule.javascript        |   0
 .../dubbo/common/logger/log4j/Log4jLogger.java     |   5 -
 .../dubbo/common/logger/log4j2/Log4j2Logger.java   |   5 +
 dubbo-compatible/pom.xml                           |   6 -
 dubbo-config/dubbo-config-api/pom.xml              |  14 -
 dubbo-config/dubbo-config-spring/pom.xml           |  30 --
 dubbo-distribution/dubbo-all/pom.xml               | 126 --------
 dubbo-distribution/dubbo-bom/pom.xml               |  84 ------
 .../src/test/resources/log4j2-test.xml             |  29 --
 dubbo-plugin/dubbo-plugin-access-log/pom.xml       |  47 ---
 .../dubbo/internal/org.apache.dubbo.rpc.Filter     |   1 -
 .../org/apache/dubbo/rpc/support/DemoService.java  |  21 --
 .../apache/dubbo/rpc/support/MockInvocation.java   | 165 -----------
 .../org/apache/dubbo/rpc/support/MyInvoker.java    |  89 ------
 .../src/test/resources/log4j.xml                   |  30 --
 .../dubbo-plugin-classloader-filter/pom.xml        |  42 ---
 .../dubbo/internal/org.apache.dubbo.rpc.Filter     |   2 -
 ...g.apache.dubbo.rpc.cluster.filter.ClusterFilter |   1 -
 .../org/apache/dubbo/rpc/support/DemoService.java  |  21 --
 .../org/apache/dubbo/rpc/support/MyInvoker.java    |  89 ------
 .../src/test/resources/log4j2-test.xml             |  29 --
 .../dubbo-plugin-cluster-mergeable/pom.xml         |  37 ---
 .../internal/org.apache.dubbo.rpc.cluster.Cluster  |   1 -
 ...rg.apache.dubbo.rpc.model.ScopeModelInitializer |   1 -
 .../src/test/resources/log4j2-test.xml             |  29 --
 dubbo-plugin/dubbo-plugin-context/pom.xml          |  42 ---
 ...g.apache.dubbo.rpc.cluster.filter.ClusterFilter |   1 -
 .../org/apache/dubbo/rpc/support/DemoService.java  |  21 --
 .../apache/dubbo/rpc/support/MockInvocation.java   | 165 -----------
 .../org/apache/dubbo/rpc/support/MyInvoker.java    |  89 ------
 .../src/test/resources/log4j2-test.xml             |  29 --
 dubbo-plugin/dubbo-plugin-generic-invoke/pom.xml   |  42 ---
 .../dubbo/internal/org.apache.dubbo.rpc.Filter     |   2 -
 .../org/apache/dubbo/rpc/support/DemoService.java  |  22 --
 .../java/org/apache/dubbo/rpc/support/Person.java  |  52 ----
 .../src/test/resources/log4j2-test.xml             |  29 --
 .../dubbo-plugin-loadbalance-adaptive/pom.xml      |  42 ---
 .../dubbo/internal/org.apache.dubbo.rpc.Filter     |   1 -
 .../org.apache.dubbo.rpc.cluster.LoadBalance       |   1 -
 ...rg.apache.dubbo.rpc.model.ScopeModelInitializer |   1 -
 .../cluster/loadbalance/LoadBalanceBaseTest.java   | 319 ---------------------
 .../src/test/resources/log4j2-test.xml             |  29 --
 dubbo-plugin/dubbo-plugin-mock/pom.xml             |  42 ---
 .../dubbo/rpc/support/MockConfigPostProcessor.java |  81 ------
 .../org.apache.dubbo.config.ConfigPostProcessor    |   1 -
 .../dubbo/internal/org.apache.dubbo.rpc.Protocol   |   1 -
 .../internal/org.apache.dubbo.rpc.cluster.Cluster  |   1 -
 ...bbo.rpc.cluster.router.state.StateRouterFactory |   1 -
 .../rpc/support/MockConfigPostProcessorTest.java   |  54 ----
 .../src/test/resources/log4j2-test.xml             |  29 --
 dubbo-plugin/dubbo-plugin-qos-trace/pom.xml        |  47 ---
 .../dubbo/qos/legacy/service/DemoService.java      |  24 --
 .../src/test/resources/log4j2-test.xml             |  29 --
 dubbo-plugin/dubbo-plugin-router-condition/pom.xml |  37 ---
 .../dubbo/rpc/cluster/router/MockInvoker.java      |  67 -----
 .../src/test/resources/log4j2-test.xml             |  29 --
 dubbo-plugin/dubbo-plugin-router-mesh/pom.xml      |  37 ---
 ...bbo.rpc.cluster.router.state.StateRouterFactory |   1 -
 ...rg.apache.dubbo.rpc.model.ScopeModelInitializer |   1 -
 .../src/test/resources/log4j2-test.xml             |  29 --
 dubbo-plugin/dubbo-plugin-router-script/pom.xml    |  37 ---
 ...bbo.rpc.cluster.router.state.StateRouterFactory |   1 -
 .../dubbo/rpc/cluster/router/MockInvoker.java      |  67 -----
 ...bbo.rpc.cluster.router.state.StateRouterFactory |   2 -
 .../src/test/resources/log4j2-test.xml             |  29 --
 dubbo-plugin/dubbo-plugin-router-tag/pom.xml       |  37 ---
 ...bbo.rpc.cluster.router.state.StateRouterFactory |   1 -
 .../dubbo/rpc/cluster/router/MockInvoker.java      |  67 -----
 .../src/test/resources/log4j2-test.xml             |  29 --
 dubbo-plugin/dubbo-plugin-token/pom.xml            |  42 ---
 .../dubbo/internal/org.apache.dubbo.rpc.Filter     |   1 -
 .../src/test/resources/log4j2-test.xml             |  29 --
 dubbo-plugin/dubbo-plugin-tps/pom.xml              |  42 ---
 .../dubbo/internal/org.apache.dubbo.rpc.Filter     |   3 -
 .../apache/dubbo/rpc/support/BlockMyInvoker.java   |  63 ----
 .../org/apache/dubbo/rpc/support/DemoService.java  |  21 --
 .../apache/dubbo/rpc/support/MockInvocation.java   | 165 -----------
 .../org/apache/dubbo/rpc/support/MyInvoker.java    |  89 ------
 .../dubbo/rpc/support/RuntimeExceptionInvoker.java |  34 ---
 .../src/test/resources/log4j2-test.xml             |  29 --
 .../dubbo/qos/legacy/ChangeTelnetHandler.java      |   0
 .../dubbo/qos/legacy/TraceTelnetHandler.java       |   0
 .../org.apache.dubbo.remoting.telnet.TelnetHandler |   0
 .../dubbo/qos/legacy/ChangeTelnetHandlerTest.java  |   0
 .../org/apache/dubbo/qos/legacy/ProtocolUtils.java |   0
 .../dubbo/qos/legacy/TraceTelnetHandlerTest.java   |   0
 .../dubbo/qos/legacy/channel/MockChannel.java      |   0
 dubbo-plugin/pom.xml                               |  14 -
 dubbo-registry/dubbo-registry-api/pom.xml          |   6 -
 .../registry/integration/RegistryProtocolTest.java |  11 +-
 .../java/org/apache/dubbo/rpc/AdaptiveMetrics.java |   0
 .../dubbo/rpc/AdaptiveScopeModelInitializer.java   |   0
 .../apache/dubbo/rpc/filter/AccessLogFilter.java   |   0
 .../apache/dubbo/rpc/filter/ActiveLimitFilter.java |   0
 .../rpc/filter/AdaptiveLoadBalanceFilter.java      |   2 +-
 .../rpc/filter/ClassLoaderCallbackFilter.java      |   0
 .../apache/dubbo/rpc/filter/ClassLoaderFilter.java |   0
 .../org/apache/dubbo/rpc/filter/ContextFilter.java |   0
 .../dubbo/rpc/filter/ExecuteLimitFilter.java       |   0
 .../org/apache/dubbo/rpc/filter/GenericFilter.java |   0
 .../apache/dubbo/rpc/filter/GenericImplFilter.java |   0
 .../org/apache/dubbo/rpc/filter/TokenFilter.java   |   0
 .../apache/dubbo/rpc/filter/TokenHeaderFilter.java |   0
 .../apache/dubbo/rpc/filter/TpsLimitFilter.java    |   0
 .../dubbo/rpc/filter/tps/DefaultTPSLimiter.java    |   0
 .../org/apache/dubbo/rpc/filter/tps/StatItem.java  |   0
 .../apache/dubbo/rpc/filter/tps/TPSLimiter.java    |   0
 .../apache/dubbo/rpc/support/AccessLogData.java    |   0
 .../org/apache/dubbo/rpc/support/MockInvoker.java  |   0
 .../org/apache/dubbo/rpc/support/MockProtocol.java |   0
 .../dubbo/internal/org.apache.dubbo.rpc.Filter     |  10 +
 .../internal/org.apache.dubbo.rpc.HeaderFilter     |   0
 .../dubbo/internal/org.apache.dubbo.rpc.Protocol   |   1 +
 ...rg.apache.dubbo.rpc.model.ScopeModelInitializer |   1 +
 .../dubbo/rpc/filter/AccessLogFilterTest.java      |  42 +--
 .../dubbo/rpc/filter/ActiveLimitFilterTest.java    |   0
 .../dubbo/rpc/filter/ClassLoaderFilterTest.java    |   0
 .../apache/dubbo/rpc/filter/ContextFilterTest.java |   0
 .../dubbo/rpc/filter/ExecuteLimitFilterTest.java   |   0
 .../apache/dubbo/rpc/filter/GenericFilterTest.java |   0
 .../dubbo/rpc/filter/GenericImplFilterTest.java    |   0
 .../apache/dubbo/rpc/filter/TokenFilterTest.java   |   0
 .../rpc/filter/tps/DefaultTPSLimiterTest.java      |   0
 .../apache/dubbo/rpc/filter/tps/StatItemTest.java  |   0
 .../dubbo/rpc/filter/tps/TpsLimitFilterTest.java   |   0
 .../rpc/protocol/dubbo/filter/TraceFilter.java     |   0
 .../dubbo/internal/org.apache.dubbo.rpc.Filter     |   0
 .../rpc/protocol/dubbo/filter/MockChannel.java     |   0
 .../rpc/protocol/dubbo/filter/TraceFilterTest.java |   4 +-
 dubbo-test/dubbo-dependencies-all/pom.xml          |  84 ------
 dubbo-xds/src/test/resources/log4j2-test.xml       |  29 --
 283 files changed, 57 insertions(+), 3289 deletions(-)

diff --git a/.artifacts b/.artifacts
index ace6eec3e6..7711cde1ea 100644
--- a/.artifacts
+++ b/.artifacts
@@ -118,19 +118,5 @@ dubbo-seata-spring-boot-starter
 dubbo-spring-security
 dubbo-tracing
 dubbo-xds
-dubbo-plugin-cluster-mergeable
-dubbo-plugin-mock
-dubbo-plugin-router-script
-dubbo-plugin-router-mesh
-dubbo-plugin-router-condition
-dubbo-plugin-router-tag
-dubbo-plugin-loadbalance-adaptive
-dubbo-plugin-access-log
-dubbo-plugin-tps
-dubbo-plugin-token
-dubbo-plugin-generic-invoke
-dubbo-plugin-context
-dubbo-plugin-classloader-filter
 dubbo-plugin-proxy-bytebuddy
-dubbo-plugin-qos-trace
 dubbo-plugin-loom
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/MergeableClusterScopeModelInitializer.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/MergeableClusterScopeModelInitializer.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/MergeableClusterScopeModelInitializer.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/MergeableClusterScopeModelInitializer.java
diff --git a/dubbo-plugin/dubbo-plugin-context/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/CallbackConsumerContextFilter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/CallbackConsumerContextFilter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-context/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/CallbackConsumerContextFilter.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/CallbackConsumerContextFilter.java
diff --git a/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerClassLoaderFilter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerClassLoaderFilter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-classloader-filter/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerClassLoaderFilter.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerClassLoaderFilter.java
diff --git a/dubbo-plugin/dubbo-plugin-context/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-context/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java
diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalance.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalance.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalance.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalance.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ArrayMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ArrayMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ArrayMerger.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ArrayMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/BooleanArrayMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/BooleanArrayMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/BooleanArrayMerger.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/BooleanArrayMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ByteArrayMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ByteArrayMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ByteArrayMerger.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ByteArrayMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/CharArrayMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/CharArrayMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/CharArrayMerger.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/CharArrayMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/FloatArrayMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/FloatArrayMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/FloatArrayMerger.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/FloatArrayMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ListMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ListMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ListMerger.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ListMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/MapMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MapMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/MapMerger.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MapMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/MergerFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MergerFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/MergerFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MergerFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/SetMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/SetMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/SetMerger.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/SetMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ShortArrayMerger.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ShortArrayMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ShortArrayMerger.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ShortArrayMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouter.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouter.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouter.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouter.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouterFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouterFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouterFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouterFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableStateRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableStateRouter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableStateRouter.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableStateRouter.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouter.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouter.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouterFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouterFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouterFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouterFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouter.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouter.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouterFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouterFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouterFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouterFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRouterRule.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRouterRule.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRouterRule.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRouterRule.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRuleParser.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRuleParser.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRuleParser.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRuleParser.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/AbstractConditionMatcher.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/AbstractConditionMatcher.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/AbstractConditionMatcher.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/AbstractConditionMatcher.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcher.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcher.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcher.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcher.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcherFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcherFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcherFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcherFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcher.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcher.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcher.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcher.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcherFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcherFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcherFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcherFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcher.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcher.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcher.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcher.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcherFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcherFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcherFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcherFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcher.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcher.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcher.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcher.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcherFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcherFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcherFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcherFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/ValuePattern.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/ValuePattern.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/ValuePattern.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/ValuePattern.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/range/RangeValuePattern.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/range/RangeValuePattern.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/range/RangeValuePattern.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/range/RangeValuePattern.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/wildcard/WildcardValuePattern.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/wildcard/WildcardValuePattern.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/wildcard/WildcardValuePattern.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/wildcard/WildcardValuePattern.java
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/file/FileStateRouterFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/file/FileStateRouterFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/file/FileStateRouterFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/file/FileStateRouterFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/MeshScopeModelInitializer.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/MeshScopeModelInitializer.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/MeshScopeModelInitializer.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/MeshScopeModelInitializer.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListener.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListener.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListener.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListener.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListener.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListener.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListener.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListener.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListenerFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListenerFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListenerFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListenerFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCache.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCache.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCache.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCache.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleConstants.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleConstants.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleConstants.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleConstants.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManager.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManager.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManager.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManager.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouter.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouter.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouter.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouter.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/BaseRule.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/BaseRule.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/BaseRule.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/BaseRule.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VsDestinationGroup.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VsDestinationGroup.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VsDestinationGroup.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VsDestinationGroup.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/ConnectionPoolSettings.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/ConnectionPoolSettings.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/ConnectionPoolSettings.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/ConnectionPoolSettings.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRule.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRule.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRule.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRule.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRuleSpec.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRuleSpec.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRuleSpec.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRuleSpec.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/Subset.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/Subset.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/Subset.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/Subset.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TCPSettings.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TCPSettings.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TCPSettings.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TCPSettings.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TcpKeepalive.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TcpKeepalive.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TcpKeepalive.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TcpKeepalive.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TrafficPolicy.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TrafficPolicy.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TrafficPolicy.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TrafficPolicy.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/ConsistentHashLB.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/ConsistentHashLB.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/ConsistentHashLB.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/ConsistentHashLB.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/LoadBalancerSettings.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/LoadBalancerSettings.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/LoadBalancerSettings.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/LoadBalancerSettings.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/SimpleLB.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/SimpleLB.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/SimpleLB.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/SimpleLB.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequest.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequest.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRoute.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRoute.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRoute.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRoute.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRouteDetail.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRouteDetail.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRouteDetail.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRouteDetail.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceRule.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceRule.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceRule.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceRule.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceSpec.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceSpec.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceSpec.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceSpec.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboDestination.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboDestination.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboDestination.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboDestination.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboRouteDestination.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboRouteDestination.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboRouteDestination.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboRouteDestination.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatch.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatch.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatch.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatch.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcher.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcher.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcher.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcher.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleListener.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleListener.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleListener.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleListener.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/TracingContextProvider.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/TracingContextProvider.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/TracingContextProvider.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/TracingContextProvider.java
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelector.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelector.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelector.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelector.java
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockStateRouterFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockStateRouterFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockStateRouterFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockStateRouterFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouter.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouter.java
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptRouterFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptRouterFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptRouterFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptRouterFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouter.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouter.java
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/model/ScriptRule.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/model/ScriptRule.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/model/ScriptRule.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/model/ScriptRule.java
diff --git a/dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouter.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouter.java
diff --git a/dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterFactory.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterFactory.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterFactory.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterFactory.java
diff --git a/dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/ParamMatch.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/ParamMatch.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/ParamMatch.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/ParamMatch.java
diff --git a/dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/Tag.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/Tag.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/Tag.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/Tag.java
diff --git a/dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java
diff --git a/dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRuleParser.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRuleParser.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRuleParser.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRuleParser.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableCluster.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableCluster.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableCluster.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableCluster.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvoker.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvoker.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvoker.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvoker.java
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvoker.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvoker.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvoker.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvoker.java
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterWrapper.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterWrapper.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterWrapper.java
rename to dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterWrapper.java
diff --git a/dubbo-plugin/dubbo-plugin-context/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
similarity index 66%
rename from dubbo-plugin/dubbo-plugin-context/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
rename to dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
index 542659af8d..261e62c914 100644
--- a/dubbo-plugin/dubbo-plugin-context/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
+++ b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
@@ -1,2 +1 @@
-context=org.apache.dubbo.rpc.filter.ContextFilter
 callback-consumer-context=org.apache.dubbo.rpc.cluster.filter.support.CallbackConsumerContextFilter
diff --git a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster
index 3530e85da1..5ff23dc553 100644
--- a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster
+++ b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster
@@ -1,3 +1,4 @@
+mock=org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterWrapper
 scope=org.apache.dubbo.rpc.cluster.support.wrapper.ScopeClusterWrapper
 failover=org.apache.dubbo.rpc.cluster.support.FailoverCluster
 failfast=org.apache.dubbo.rpc.cluster.support.FailfastCluster
@@ -5,5 +6,6 @@ failsafe=org.apache.dubbo.rpc.cluster.support.FailsafeCluster
 failback=org.apache.dubbo.rpc.cluster.support.FailbackCluster
 forking=org.apache.dubbo.rpc.cluster.support.ForkingCluster
 available=org.apache.dubbo.rpc.cluster.support.AvailableCluster
+mergeable=org.apache.dubbo.rpc.cluster.support.MergeableCluster
 broadcast=org.apache.dubbo.rpc.cluster.support.BroadcastCluster
 zone-aware=org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareCluster
diff --git a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance
index 1a62761975..1bb371b7f7 100644
--- a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance
+++ b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance
@@ -3,3 +3,4 @@ roundrobin=org.apache.dubbo.rpc.cluster.loadbalance.RoundRobinLoadBalance
 leastactive=org.apache.dubbo.rpc.cluster.loadbalance.LeastActiveLoadBalance
 consistenthash=org.apache.dubbo.rpc.cluster.loadbalance.ConsistentHashLoadBalance
 shortestresponse=org.apache.dubbo.rpc.cluster.loadbalance.ShortestResponseLoadBalance
+adaptive=org.apache.dubbo.rpc.cluster.loadbalance.AdaptiveLoadBalance
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger
rename to dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger
diff --git a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter
index 8bbbf593eb..4e0de2450a 100644
--- a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter
+++ b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter
@@ -1,2 +1,4 @@
+consumercontext=org.apache.dubbo.rpc.cluster.filter.support.ConsumerContextFilter
+consumer-classloader=org.apache.dubbo.rpc.cluster.filter.support.ConsumerClassLoaderFilter
 router-snapshot=org.apache.dubbo.rpc.cluster.router.RouterSnapshotFilter
 metricsConsumerFilter=org.apache.dubbo.rpc.cluster.filter.support.MetricsConsumerFilter
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.ConditionMatcherFactory b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.ConditionMatcherFactory
similarity index 99%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.ConditionMatcherFactory
rename to dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.ConditionMatcherFactory
index b900f5b9bf..f388077330 100644
--- a/dubbo-plugin/dubbo-plugin-router-condition/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.ConditionMatcherFactory
+++ b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.ConditionMatcherFactory
@@ -1,4 +1,3 @@
 attachment=org.apache.dubbo.rpc.cluster.router.condition.matcher.attachment.AttachmentConditionMatcherFactory
 argument=org.apache.dubbo.rpc.cluster.router.condition.matcher.argument.ArgumentConditionMatcherFactory
 param=org.apache.dubbo.rpc.cluster.router.condition.matcher.param.UrlParamConditionMatcherFactory
-
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.pattern.ValuePattern b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.pattern.ValuePattern
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.pattern.ValuePattern
rename to dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.pattern.ValuePattern
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
similarity index 52%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
rename to dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
index 3fe964484c..a976034414 100644
--- a/dubbo-plugin/dubbo-plugin-router-condition/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
+++ b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
@@ -1,4 +1,8 @@
+mock=org.apache.dubbo.rpc.cluster.router.mock.MockStateRouterFactory
 condition=org.apache.dubbo.rpc.cluster.router.condition.ConditionStateRouterFactory
 service=org.apache.dubbo.rpc.cluster.router.condition.config.ServiceStateRouterFactory
 app=org.apache.dubbo.rpc.cluster.router.condition.config.AppStateRouterFactory
 provider-app=org.apache.dubbo.rpc.cluster.router.condition.config.ProviderAppStateRouterFactory
+standard-mesh-rule=org.apache.dubbo.rpc.cluster.router.mesh.route.StandardMeshRuleRouterFactory
+script-app=org.apache.dubbo.rpc.cluster.router.script.config.AppScriptRouterFactory
+tag=org.apache.dubbo.rpc.cluster.router.tag.TagStateRouterFactory
diff --git a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer
index 1718c117cb..1145ea5527 100644
--- a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer
+++ b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer
@@ -1 +1,3 @@
 dubbo-cluster=org.apache.dubbo.rpc.cluster.ClusterScopeModelInitializer
+dubbo-cluster-mergeable=org.apache.dubbo.rpc.cluster.MergeableClusterScopeModelInitializer
+mesh=org.apache.dubbo.rpc.cluster.router.mesh.MeshScopeModelInitializer
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectoryTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectoryTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectoryTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectoryTest.java
diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalanceTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalanceTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalanceTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalanceTest.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/DoubleSumMerger.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/DoubleSumMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/DoubleSumMerger.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/DoubleSumMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/FloatSumMerger.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/FloatSumMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/FloatSumMerger.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/FloatSumMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindAnyMerger.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindAnyMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindAnyMerger.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindAnyMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindFirstMerger.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindFirstMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindFirstMerger.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindFirstMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntSumMerger.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntSumMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntSumMerger.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntSumMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/LongSumMerger.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/LongSumMerger.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/LongSumMerger.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/LongSumMerger.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/ResultMergerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/ResultMergerTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/ResultMergerTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/ResultMergerTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/ConfigConditionRouterTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/ConfigConditionRouterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/ConfigConditionRouterTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/ConfigConditionRouterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppConditionStateRouterTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppConditionStateRouterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppConditionStateRouterTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppConditionStateRouterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/file/FileRouterEngineTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/file/FileRouterEngineTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/file/FileRouterEngineTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/file/FileRouterEngineTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListenerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListenerTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListenerTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListenerTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCacheTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCacheTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCacheTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCacheTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManagerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManagerTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManagerTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManagerTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouterTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouterTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactoryTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactoryTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactoryTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactoryTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/DestinationRuleTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/DestinationRuleTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/DestinationRuleTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/DestinationRuleTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VirtualServiceRuleTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VirtualServiceRuleTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VirtualServiceRuleTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VirtualServiceRuleTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequestTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequestTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequestTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequestTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatchTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatchTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatchTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatchTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcherTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcherTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcherTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcherTest.java
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelectorTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelectorTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelectorTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelectorTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouterTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouterTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-router-tag/src/test/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-tag/src/test/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceA.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceA.java
similarity index 94%
rename from dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceA.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceA.java
index 54318360df..52eea7b694 100644
--- a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceA.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceA.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.rpc.support;
+package org.apache.dubbo.rpc.cluster.support;
 
 public interface DemoServiceA {
     String methodA();
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceAMock.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceAMock.java
similarity index 95%
rename from dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceAMock.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceAMock.java
index 928bb46382..e7beb67657 100644
--- a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceAMock.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceAMock.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.rpc.support;
+package org.apache.dubbo.rpc.cluster.support;
 
 /**
  * default mock service for DemoServiceA
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceB.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceB.java
similarity index 94%
rename from dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceB.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceB.java
index a2350a5daa..446f37b9f1 100644
--- a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceB.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceB.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.rpc.support;
+package org.apache.dubbo.rpc.cluster.support;
 
 public interface DemoServiceB {
     String methodB();
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceBMock.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceBMock.java
similarity index 95%
rename from dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceBMock.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceBMock.java
index ffc199dc86..f8cb39ab06 100644
--- a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceBMock.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/DemoServiceBMock.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.rpc.support;
+package org.apache.dubbo.rpc.cluster.support;
 
 /**
  * default mock service for DemoServiceA
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/Greeting.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/Greeting.java
similarity index 95%
rename from dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/Greeting.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/Greeting.java
index a1f97d3023..108f2c9b67 100644
--- a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/Greeting.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/Greeting.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.rpc.support;
+package org.apache.dubbo.rpc.cluster.support;
 
 import org.apache.dubbo.common.extension.SPI;
 
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/GreetingMock1.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/GreetingMock1.java
similarity index 94%
rename from dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/GreetingMock1.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/GreetingMock1.java
index e484f4aa18..a3efb3ba68 100644
--- a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/GreetingMock1.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/GreetingMock1.java
@@ -14,6 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.rpc.support;
+package org.apache.dubbo.rpc.cluster.support;
 
 public class GreetingMock1 {}
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/GreetingMock2.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/GreetingMock2.java
similarity index 95%
rename from dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/GreetingMock2.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/GreetingMock2.java
index 052f8832ef..05bbc84702 100644
--- a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/GreetingMock2.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/GreetingMock2.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.rpc.support;
+package org.apache.dubbo.rpc.cluster.support;
 
 public class GreetingMock2 implements Greeting {
     private GreetingMock2() {}
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/support/Menu.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/Menu.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/support/Menu.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/Menu.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/support/MenuService.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MenuService.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/support/MenuService.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MenuService.java
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvokerTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvokerTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvokerTest.java
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockAbstractClusterInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MockAbstractClusterInvokerTest.java
similarity index 98%
rename from dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockAbstractClusterInvokerTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MockAbstractClusterInvokerTest.java
index 07ac207352..5a31ff663a 100644
--- a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockAbstractClusterInvokerTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MockAbstractClusterInvokerTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.rpc.support;
+package org.apache.dubbo.rpc.cluster.support;
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.metrics.event.MetricsDispatcher;
@@ -26,7 +26,6 @@ import org.apache.dubbo.rpc.RpcException;
 import org.apache.dubbo.rpc.RpcInvocation;
 import org.apache.dubbo.rpc.cluster.LoadBalance;
 import org.apache.dubbo.rpc.cluster.directory.StaticDirectory;
-import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;
 import org.apache.dubbo.rpc.model.ApplicationModel;
 
 import java.util.ArrayList;
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MockInvokerTest.java
similarity index 96%
rename from dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockInvokerTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MockInvokerTest.java
index 9769818621..ae0509ffad 100644
--- a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockInvokerTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MockInvokerTest.java
@@ -14,12 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.rpc.support;
+package org.apache.dubbo.rpc.cluster.support;
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.rpc.RpcException;
 import org.apache.dubbo.rpc.RpcInvocation;
 import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.apache.dubbo.rpc.support.MockInvoker;
 
 import java.io.Serializable;
 import java.lang.reflect.Type;
@@ -116,7 +117,8 @@ class MockInvokerTest {
 
     @Test
     void testGetThrowable() {
-        Assertions.assertThrows(RpcException.class, () -> MockInvoker.getThrowable("Exception.class"));
+        Assertions.assertThrows(
+                RpcException.class, () -> org.apache.dubbo.rpc.support.MockInvoker.getThrowable("Exception.class"));
     }
 
     @Test
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvokerTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvokerTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvokerTest.java
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockProviderRpcExceptionTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockProviderRpcExceptionTest.java
similarity index 98%
rename from dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockProviderRpcExceptionTest.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockProviderRpcExceptionTest.java
index 697f4b68d2..4851e1790b 100644
--- a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockProviderRpcExceptionTest.java
+++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockProviderRpcExceptionTest.java
@@ -62,7 +62,7 @@ class MockProviderRpcExceptionTest {
                 .addParameter("invoke_return_error", "true")
                 .addParameter(
                         REFER_KEY,
-                        URL.encode(PATH_KEY + "=" + MockProviderRpcExceptionTest.IHelloRpcService.class.getName()
+                        URL.encode(PATH_KEY + "=" + IHelloRpcService.class.getName()
                                 + "&" + "mock=true"
                                 + "&" + "proxy=jdk"));
         Invoker<IHelloRpcService> cluster = getClusterInvoker(url);
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MyMockException.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MyMockException.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MyMockException.java
rename to dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MyMockException.java
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/DestinationRuleTest.yaml b/dubbo-cluster/src/test/resources/DestinationRuleTest.yaml
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/DestinationRuleTest.yaml
rename to dubbo-cluster/src/test/resources/DestinationRuleTest.yaml
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/DestinationRuleTest2.yaml b/dubbo-cluster/src/test/resources/DestinationRuleTest2.yaml
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/DestinationRuleTest2.yaml
rename to dubbo-cluster/src/test/resources/DestinationRuleTest2.yaml
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger b/dubbo-cluster/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger
rename to dubbo-cluster/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory b/dubbo-cluster/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
rename to dubbo-cluster/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/VirtualServiceTest.yaml b/dubbo-cluster/src/test/resources/VirtualServiceTest.yaml
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/VirtualServiceTest.yaml
rename to dubbo-cluster/src/test/resources/VirtualServiceTest.yaml
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/availablerule.javascript b/dubbo-cluster/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/availablerule.javascript
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-script/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/availablerule.javascript
rename to dubbo-cluster/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/availablerule.javascript
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/methodrule.javascript b/dubbo-cluster/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/methodrule.javascript
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-script/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/methodrule.javascript
rename to dubbo-cluster/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/methodrule.javascript
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/notAvailablerule.javascript b/dubbo-cluster/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/notAvailablerule.javascript
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-router-script/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/notAvailablerule.javascript
rename to dubbo-cluster/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/notAvailablerule.javascript
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j/Log4jLogger.java b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j/Log4jLogger.java
index ed621224ce..9c1073aa9c 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j/Log4jLogger.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j/Log4jLogger.java
@@ -162,9 +162,4 @@ public class Log4jLogger implements Logger {
     public boolean isErrorEnabled() {
         return logger.isEnabledFor(Level.ERROR);
     }
-
-    // test purpose only
-    public org.apache.log4j.Logger getLogger() {
-        return logger;
-    }
 }
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2Logger.java b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2Logger.java
index f0a1ab773d..8701b181fe 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2Logger.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/logger/log4j2/Log4j2Logger.java
@@ -150,4 +150,9 @@ public class Log4j2Logger implements Logger {
     public boolean isErrorEnabled() {
         return logger.isErrorEnabled();
     }
+
+    // test purpose only
+    public org.apache.logging.log4j.Logger getLogger() {
+        return logger;
+    }
 }
diff --git a/dubbo-compatible/pom.xml b/dubbo-compatible/pom.xml
index 314b4fd8f6..656bfed56f 100644
--- a/dubbo-compatible/pom.xml
+++ b/dubbo-compatible/pom.xml
@@ -115,12 +115,6 @@
       <version>${project.parent.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-generic-invoke</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>test</scope>
-    </dependency>
     <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>fastjson</artifactId>
diff --git a/dubbo-config/dubbo-config-api/pom.xml b/dubbo-config/dubbo-config-api/pom.xml
index 5f8c343abd..277f8be635 100644
--- a/dubbo-config/dubbo-config-api/pom.xml
+++ b/dubbo-config/dubbo-config-api/pom.xml
@@ -232,20 +232,6 @@
       <scope>test</scope>
     </dependency>
 
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-router-condition</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-router-tag</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>test</scope>
-    </dependency>
-
     <dependency>
       <groupId>org.testcontainers</groupId>
       <artifactId>testcontainers</artifactId>
diff --git a/dubbo-config/dubbo-config-spring/pom.xml b/dubbo-config/dubbo-config-spring/pom.xml
index cf91bb0a15..3a092d4f8c 100644
--- a/dubbo-config/dubbo-config-spring/pom.xml
+++ b/dubbo-config/dubbo-config-spring/pom.xml
@@ -119,36 +119,6 @@
       <version>${project.parent.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-context</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-generic-invoke</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-classloader-filter</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-access-log</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-qos-trace</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>test</scope>
-    </dependency>
     <dependency>
       <groupId>javax.validation</groupId>
       <artifactId>validation-api</artifactId>
diff --git a/dubbo-distribution/dubbo-all/pom.xml b/dubbo-distribution/dubbo-all/pom.xml
index 51dd0e7761..9740f5744c 100644
--- a/dubbo-distribution/dubbo-all/pom.xml
+++ b/dubbo-distribution/dubbo-all/pom.xml
@@ -276,110 +276,6 @@
       <optional>true</optional>
     </dependency>
 
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-cluster-mergeable</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-mock</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-router-script</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-router-mesh</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-router-condition</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-router-tag</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-loadbalance-adaptive</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-access-log</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-tps</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-token</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-generic-invoke</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-context</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-classloader-filter</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-
     <dependency>
       <groupId>org.apache.dubbo</groupId>
       <artifactId>dubbo-plugin-proxy-bytebuddy</artifactId>
@@ -388,14 +284,6 @@
       <optional>true</optional>
     </dependency>
 
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-qos-trace</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
-
     <!-- registry -->
     <dependency>
       <groupId>org.apache.dubbo</groupId>
@@ -637,21 +525,7 @@
                   <include>org.apache.dubbo:dubbo-security</include>
                   <include>org.apache.dubbo:dubbo-reactive</include>
                   <include>org.apache.dubbo:dubbo-spring-security</include>
-                  <include>org.apache.dubbo:dubbo-plugin-cluster-mergeable</include>
-                  <include>org.apache.dubbo:dubbo-plugin-mock</include>
-                  <include>org.apache.dubbo:dubbo-plugin-router-script</include>
-                  <include>org.apache.dubbo:dubbo-plugin-router-mesh</include>
-                  <include>org.apache.dubbo:dubbo-plugin-router-condition</include>
-                  <include>org.apache.dubbo:dubbo-plugin-router-tag</include>
-                  <include>org.apache.dubbo:dubbo-plugin-loadbalance-adaptive</include>
-                  <include>org.apache.dubbo:dubbo-plugin-access-log</include>
-                  <include>org.apache.dubbo:dubbo-plugin-tps</include>
-                  <include>org.apache.dubbo:dubbo-plugin-token</include>
-                  <include>org.apache.dubbo:dubbo-plugin-generic-invoke</include>
-                  <include>org.apache.dubbo:dubbo-plugin-context</include>
-                  <include>org.apache.dubbo:dubbo-plugin-classloader-filter</include>
                   <include>org.apache.dubbo:dubbo-plugin-proxy-bytebuddy</include>
-                  <include>org.apache.dubbo:dubbo-plugin-qos-trace</include>
                   <include>org.apache.dubbo:dubbo-registry-api</include>
                   <include>org.apache.dubbo:dubbo-registry-multicast</include>
                   <include>org.apache.dubbo:dubbo-registry-multiple</include>
diff --git a/dubbo-distribution/dubbo-bom/pom.xml b/dubbo-distribution/dubbo-bom/pom.xml
index acc133fe6a..0edc520744 100644
--- a/dubbo-distribution/dubbo-bom/pom.xml
+++ b/dubbo-distribution/dubbo-bom/pom.xml
@@ -329,96 +329,12 @@
         <version>${project.version}</version>
       </dependency>
 
-      <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-plugin-cluster-mergeable</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-plugin-mock</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-plugin-router-script</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-plugin-router-mesh</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-plugin-router-condition</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-plugin-router-tag</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-plugin-loadbalance-adaptive</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-plugin-access-log</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-plugin-tps</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-plugin-token</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-plugin-generic-invoke</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-plugin-context</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-plugin-classloader-filter</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
       <dependency>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-plugin-proxy-bytebuddy</artifactId>
         <version>${project.version}</version>
       </dependency>
 
-      <dependency>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-plugin-qos-trace</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-
       <!-- registry -->
       <dependency>
         <groupId>org.apache.dubbo</groupId>
diff --git a/dubbo-kubernetes/src/test/resources/log4j2-test.xml b/dubbo-kubernetes/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-kubernetes/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] %40.40c:%-3L -| %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-plugin/dubbo-plugin-access-log/pom.xml b/dubbo-plugin/dubbo-plugin-access-log/pom.xml
deleted file mode 100644
index b3dd64cf43..0000000000
--- a/dubbo-plugin/dubbo-plugin-access-log/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">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-plugin</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-plugin-access-log</artifactId>
-  <packaging>jar</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-cluster</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-plugin/dubbo-plugin-access-log/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-plugin/dubbo-plugin-access-log/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
deleted file mode 100644
index 30e8012d97..0000000000
--- a/dubbo-plugin/dubbo-plugin-access-log/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
+++ /dev/null
@@ -1 +0,0 @@
-accesslog=org.apache.dubbo.rpc.filter.AccessLogFilter
diff --git a/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/DemoService.java b/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/DemoService.java
deleted file mode 100644
index 82d869a25e..0000000000
--- a/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/DemoService.java
+++ /dev/null
@@ -1,21 +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.rpc.support;
-
-public interface DemoService {
-    void sayHello(String name);
-}
diff --git a/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java b/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java
deleted file mode 100644
index ffcabd8d47..0000000000
--- a/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java
+++ /dev/null
@@ -1,165 +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.rpc.support;
-
-import org.apache.dubbo.rpc.AttachmentsAdapter;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.RpcInvocation;
-import org.apache.dubbo.rpc.model.ServiceModel;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
-import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;
-
-/**
- * MockInvocation.java
- */
-public class MockInvocation extends RpcInvocation {
-
-    private Map<String, Object> attachments;
-
-    public MockInvocation() {
-        attachments = new HashMap<>();
-        attachments.put(PATH_KEY, "dubbo");
-        attachments.put(GROUP_KEY, "dubbo");
-        attachments.put(VERSION_KEY, "1.0.0");
-        attachments.put(DUBBO_VERSION_KEY, "1.0.0");
-        attachments.put(TOKEN_KEY, "sfag");
-        attachments.put(TIMEOUT_KEY, "1000");
-    }
-
-    @Override
-    public String getTargetServiceUniqueName() {
-        return null;
-    }
-
-    @Override
-    public String getProtocolServiceKey() {
-        return null;
-    }
-
-    public String getMethodName() {
-        return "echo";
-    }
-
-    @Override
-    public String getServiceName() {
-        return "DemoService";
-    }
-
-    public Class<?>[] getParameterTypes() {
-        return new Class[] {String.class};
-    }
-
-    public Object[] getArguments() {
-        return new Object[] {"aa"};
-    }
-
-    public Map<String, String> getAttachments() {
-        return new AttachmentsAdapter.ObjectToStringMap(attachments);
-    }
-
-    @Override
-    public Map<String, Object> getObjectAttachments() {
-        return attachments;
-    }
-
-    @Override
-    public void setAttachment(String key, String value) {
-        setObjectAttachment(key, value);
-    }
-
-    @Override
-    public void setAttachment(String key, Object value) {
-        setObjectAttachment(key, value);
-    }
-
-    @Override
-    public void setObjectAttachment(String key, Object value) {
-        attachments.put(key, value);
-    }
-
-    @Override
-    public void setAttachmentIfAbsent(String key, String value) {
-        setObjectAttachmentIfAbsent(key, value);
-    }
-
-    @Override
-    public void setAttachmentIfAbsent(String key, Object value) {
-        setObjectAttachmentIfAbsent(key, value);
-    }
-
-    @Override
-    public void setObjectAttachmentIfAbsent(String key, Object value) {
-        attachments.put(key, value);
-    }
-
-    public Invoker<?> getInvoker() {
-        return null;
-    }
-
-    @Override
-    public void setServiceModel(ServiceModel serviceModel) {}
-
-    @Override
-    public ServiceModel getServiceModel() {
-        return null;
-    }
-
-    @Override
-    public Object put(Object key, Object value) {
-        return null;
-    }
-
-    @Override
-    public Object get(Object key) {
-        return null;
-    }
-
-    @Override
-    public Map<Object, Object> getAttributes() {
-        return null;
-    }
-
-    public String getAttachment(String key) {
-        return (String) getObjectAttachments().get(key);
-    }
-
-    @Override
-    public Object getObjectAttachment(String key) {
-        return attachments.get(key);
-    }
-
-    public String getAttachment(String key, String defaultValue) {
-        return (String) getObjectAttachments().get(key);
-    }
-
-    @Override
-    public Object getObjectAttachment(String key, Object defaultValue) {
-        Object result = attachments.get(key);
-        if (result == null) {
-            return defaultValue;
-        }
-        return result;
-    }
-}
diff --git a/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java b/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java
deleted file mode 100644
index 670a3f7885..0000000000
--- a/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java
+++ /dev/null
@@ -1,89 +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.rpc.support;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.rpc.AppResponse;
-import org.apache.dubbo.rpc.AsyncRpcResult;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.Result;
-import org.apache.dubbo.rpc.RpcException;
-
-import java.util.concurrent.CompletableFuture;
-
-/**
- * MockInvoker.java
- */
-public class MyInvoker<T> implements Invoker<T> {
-
-    URL url;
-    Class<T> type;
-    boolean hasException = false;
-    boolean destroyed = false;
-
-    public MyInvoker(URL url) {
-        this.url = url;
-        type = (Class<T>) DemoService.class;
-    }
-
-    public MyInvoker(URL url, boolean hasException) {
-        this.url = url;
-        type = (Class<T>) DemoService.class;
-        this.hasException = hasException;
-    }
-
-    @Override
-    public Class<T> getInterface() {
-        return type;
-    }
-
-    public URL getUrl() {
-        return url;
-    }
-
-    @Override
-    public boolean isAvailable() {
-        return false;
-    }
-
-    @Override
-    public Result invoke(Invocation invocation) throws RpcException {
-        AppResponse result = new AppResponse();
-        if (!hasException) {
-            result.setValue("alibaba");
-        } else {
-            result.setException(new RuntimeException("mocked exception"));
-        }
-
-        return new AsyncRpcResult(CompletableFuture.completedFuture(result), invocation);
-    }
-
-    @Override
-    public void destroy() {
-        destroyed = true;
-    }
-
-    public boolean isDestroyed() {
-        return destroyed;
-    }
-
-    @Override
-    public String toString() {
-        return "MyInvoker.toString()";
-    }
-}
diff --git a/dubbo-plugin/dubbo-plugin-access-log/src/test/resources/log4j.xml b/dubbo-plugin/dubbo-plugin-access-log/src/test/resources/log4j.xml
deleted file mode 100644
index bf24fb154b..0000000000
--- a/dubbo-plugin/dubbo-plugin-access-log/src/test/resources/log4j.xml
+++ /dev/null
@@ -1,30 +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.
-  -->
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-<log4j:configuration>
-    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
-        <layout class="org.apache.log4j.PatternLayout">
-            <param name="ConversionPattern" value="[%d{HH:mm:ss:SSS}] %5p %t %c{2}: %m%n"/>
-        </layout>
-    </appender>
-
-    <root>
-        <level value="INFO"/>
-        <appender-ref ref="CONSOLE"/>
-    </root>
-</log4j:configuration>
diff --git a/dubbo-plugin/dubbo-plugin-classloader-filter/pom.xml b/dubbo-plugin/dubbo-plugin-classloader-filter/pom.xml
deleted file mode 100644
index 334ef7244e..0000000000
--- a/dubbo-plugin/dubbo-plugin-classloader-filter/pom.xml
+++ /dev/null
@@ -1,42 +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">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-plugin</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-plugin-classloader-filter</artifactId>
-  <packaging>jar</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-cluster</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
deleted file mode 100644
index e92d76c15b..0000000000
--- a/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
+++ /dev/null
@@ -1,2 +0,0 @@
-classloader=org.apache.dubbo.rpc.filter.ClassLoaderFilter
-classloader-callback=org.apache.dubbo.rpc.filter.ClassLoaderCallbackFilter
diff --git a/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter b/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter
deleted file mode 100644
index bc3a0a742d..0000000000
--- a/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter
+++ /dev/null
@@ -1 +0,0 @@
-consumer-classloader=org.apache.dubbo.rpc.cluster.filter.support.ConsumerClassLoaderFilter
diff --git a/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/support/DemoService.java b/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/support/DemoService.java
deleted file mode 100644
index 82d869a25e..0000000000
--- a/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/support/DemoService.java
+++ /dev/null
@@ -1,21 +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.rpc.support;
-
-public interface DemoService {
-    void sayHello(String name);
-}
diff --git a/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java b/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java
deleted file mode 100644
index 670a3f7885..0000000000
--- a/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java
+++ /dev/null
@@ -1,89 +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.rpc.support;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.rpc.AppResponse;
-import org.apache.dubbo.rpc.AsyncRpcResult;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.Result;
-import org.apache.dubbo.rpc.RpcException;
-
-import java.util.concurrent.CompletableFuture;
-
-/**
- * MockInvoker.java
- */
-public class MyInvoker<T> implements Invoker<T> {
-
-    URL url;
-    Class<T> type;
-    boolean hasException = false;
-    boolean destroyed = false;
-
-    public MyInvoker(URL url) {
-        this.url = url;
-        type = (Class<T>) DemoService.class;
-    }
-
-    public MyInvoker(URL url, boolean hasException) {
-        this.url = url;
-        type = (Class<T>) DemoService.class;
-        this.hasException = hasException;
-    }
-
-    @Override
-    public Class<T> getInterface() {
-        return type;
-    }
-
-    public URL getUrl() {
-        return url;
-    }
-
-    @Override
-    public boolean isAvailable() {
-        return false;
-    }
-
-    @Override
-    public Result invoke(Invocation invocation) throws RpcException {
-        AppResponse result = new AppResponse();
-        if (!hasException) {
-            result.setValue("alibaba");
-        } else {
-            result.setException(new RuntimeException("mocked exception"));
-        }
-
-        return new AsyncRpcResult(CompletableFuture.completedFuture(result), invocation);
-    }
-
-    @Override
-    public void destroy() {
-        destroyed = true;
-    }
-
-    public boolean isDestroyed() {
-        return destroyed;
-    }
-
-    @Override
-    public String toString() {
-        return "MyInvoker.toString()";
-    }
-}
diff --git a/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/resources/log4j2-test.xml b/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] %40.40c:%-3L -| %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/pom.xml b/dubbo-plugin/dubbo-plugin-cluster-mergeable/pom.xml
deleted file mode 100644
index 09b9e73c01..0000000000
--- a/dubbo-plugin/dubbo-plugin-cluster-mergeable/pom.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-plugin</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-plugin-cluster-mergeable</artifactId>
-  <packaging>jar</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-cluster</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster
deleted file mode 100644
index 271eb4263f..0000000000
--- a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster
+++ /dev/null
@@ -1 +0,0 @@
-mergeable=org.apache.dubbo.rpc.cluster.support.MergeableCluster
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer
deleted file mode 100644
index 7a96a95a42..0000000000
--- a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer
+++ /dev/null
@@ -1 +0,0 @@
-dubbo-cluster-mergeable=org.apache.dubbo.rpc.cluster.MergeableClusterScopeModelInitializer
diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/resources/log4j2-test.xml b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] %40.40c:%-3L -| %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-plugin/dubbo-plugin-context/pom.xml b/dubbo-plugin/dubbo-plugin-context/pom.xml
deleted file mode 100644
index e0a296d1e4..0000000000
--- a/dubbo-plugin/dubbo-plugin-context/pom.xml
+++ /dev/null
@@ -1,42 +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">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-plugin</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-plugin-context</artifactId>
-  <packaging>jar</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-cluster</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-plugin/dubbo-plugin-context/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter b/dubbo-plugin/dubbo-plugin-context/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter
deleted file mode 100644
index a929725672..0000000000
--- a/dubbo-plugin/dubbo-plugin-context/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter
+++ /dev/null
@@ -1 +0,0 @@
-consumercontext=org.apache.dubbo.rpc.cluster.filter.support.ConsumerContextFilter
diff --git a/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/DemoService.java b/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/DemoService.java
deleted file mode 100644
index 82d869a25e..0000000000
--- a/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/DemoService.java
+++ /dev/null
@@ -1,21 +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.rpc.support;
-
-public interface DemoService {
-    void sayHello(String name);
-}
diff --git a/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java b/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java
deleted file mode 100644
index ffcabd8d47..0000000000
--- a/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java
+++ /dev/null
@@ -1,165 +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.rpc.support;
-
-import org.apache.dubbo.rpc.AttachmentsAdapter;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.RpcInvocation;
-import org.apache.dubbo.rpc.model.ServiceModel;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
-import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;
-
-/**
- * MockInvocation.java
- */
-public class MockInvocation extends RpcInvocation {
-
-    private Map<String, Object> attachments;
-
-    public MockInvocation() {
-        attachments = new HashMap<>();
-        attachments.put(PATH_KEY, "dubbo");
-        attachments.put(GROUP_KEY, "dubbo");
-        attachments.put(VERSION_KEY, "1.0.0");
-        attachments.put(DUBBO_VERSION_KEY, "1.0.0");
-        attachments.put(TOKEN_KEY, "sfag");
-        attachments.put(TIMEOUT_KEY, "1000");
-    }
-
-    @Override
-    public String getTargetServiceUniqueName() {
-        return null;
-    }
-
-    @Override
-    public String getProtocolServiceKey() {
-        return null;
-    }
-
-    public String getMethodName() {
-        return "echo";
-    }
-
-    @Override
-    public String getServiceName() {
-        return "DemoService";
-    }
-
-    public Class<?>[] getParameterTypes() {
-        return new Class[] {String.class};
-    }
-
-    public Object[] getArguments() {
-        return new Object[] {"aa"};
-    }
-
-    public Map<String, String> getAttachments() {
-        return new AttachmentsAdapter.ObjectToStringMap(attachments);
-    }
-
-    @Override
-    public Map<String, Object> getObjectAttachments() {
-        return attachments;
-    }
-
-    @Override
-    public void setAttachment(String key, String value) {
-        setObjectAttachment(key, value);
-    }
-
-    @Override
-    public void setAttachment(String key, Object value) {
-        setObjectAttachment(key, value);
-    }
-
-    @Override
-    public void setObjectAttachment(String key, Object value) {
-        attachments.put(key, value);
-    }
-
-    @Override
-    public void setAttachmentIfAbsent(String key, String value) {
-        setObjectAttachmentIfAbsent(key, value);
-    }
-
-    @Override
-    public void setAttachmentIfAbsent(String key, Object value) {
-        setObjectAttachmentIfAbsent(key, value);
-    }
-
-    @Override
-    public void setObjectAttachmentIfAbsent(String key, Object value) {
-        attachments.put(key, value);
-    }
-
-    public Invoker<?> getInvoker() {
-        return null;
-    }
-
-    @Override
-    public void setServiceModel(ServiceModel serviceModel) {}
-
-    @Override
-    public ServiceModel getServiceModel() {
-        return null;
-    }
-
-    @Override
-    public Object put(Object key, Object value) {
-        return null;
-    }
-
-    @Override
-    public Object get(Object key) {
-        return null;
-    }
-
-    @Override
-    public Map<Object, Object> getAttributes() {
-        return null;
-    }
-
-    public String getAttachment(String key) {
-        return (String) getObjectAttachments().get(key);
-    }
-
-    @Override
-    public Object getObjectAttachment(String key) {
-        return attachments.get(key);
-    }
-
-    public String getAttachment(String key, String defaultValue) {
-        return (String) getObjectAttachments().get(key);
-    }
-
-    @Override
-    public Object getObjectAttachment(String key, Object defaultValue) {
-        Object result = attachments.get(key);
-        if (result == null) {
-            return defaultValue;
-        }
-        return result;
-    }
-}
diff --git a/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java b/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java
deleted file mode 100644
index 670a3f7885..0000000000
--- a/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java
+++ /dev/null
@@ -1,89 +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.rpc.support;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.rpc.AppResponse;
-import org.apache.dubbo.rpc.AsyncRpcResult;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.Result;
-import org.apache.dubbo.rpc.RpcException;
-
-import java.util.concurrent.CompletableFuture;
-
-/**
- * MockInvoker.java
- */
-public class MyInvoker<T> implements Invoker<T> {
-
-    URL url;
-    Class<T> type;
-    boolean hasException = false;
-    boolean destroyed = false;
-
-    public MyInvoker(URL url) {
-        this.url = url;
-        type = (Class<T>) DemoService.class;
-    }
-
-    public MyInvoker(URL url, boolean hasException) {
-        this.url = url;
-        type = (Class<T>) DemoService.class;
-        this.hasException = hasException;
-    }
-
-    @Override
-    public Class<T> getInterface() {
-        return type;
-    }
-
-    public URL getUrl() {
-        return url;
-    }
-
-    @Override
-    public boolean isAvailable() {
-        return false;
-    }
-
-    @Override
-    public Result invoke(Invocation invocation) throws RpcException {
-        AppResponse result = new AppResponse();
-        if (!hasException) {
-            result.setValue("alibaba");
-        } else {
-            result.setException(new RuntimeException("mocked exception"));
-        }
-
-        return new AsyncRpcResult(CompletableFuture.completedFuture(result), invocation);
-    }
-
-    @Override
-    public void destroy() {
-        destroyed = true;
-    }
-
-    public boolean isDestroyed() {
-        return destroyed;
-    }
-
-    @Override
-    public String toString() {
-        return "MyInvoker.toString()";
-    }
-}
diff --git a/dubbo-plugin/dubbo-plugin-context/src/test/resources/log4j2-test.xml b/dubbo-plugin/dubbo-plugin-context/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-plugin/dubbo-plugin-context/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] %40.40c:%-3L -| %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-plugin/dubbo-plugin-generic-invoke/pom.xml b/dubbo-plugin/dubbo-plugin-generic-invoke/pom.xml
deleted file mode 100644
index 39665670ef..0000000000
--- a/dubbo-plugin/dubbo-plugin-generic-invoke/pom.xml
+++ /dev/null
@@ -1,42 +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">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-plugin</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-plugin-generic-invoke</artifactId>
-  <packaging>jar</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-cluster</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-plugin/dubbo-plugin-generic-invoke/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-plugin/dubbo-plugin-generic-invoke/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
deleted file mode 100644
index bc10f0d739..0000000000
--- a/dubbo-plugin/dubbo-plugin-generic-invoke/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
+++ /dev/null
@@ -1,2 +0,0 @@
-generic=org.apache.dubbo.rpc.filter.GenericFilter
-genericimpl=org.apache.dubbo.rpc.filter.GenericImplFilter
diff --git a/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/support/DemoService.java b/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/support/DemoService.java
deleted file mode 100644
index 0a8caa5f21..0000000000
--- a/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/support/DemoService.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.rpc.support;
-
-public interface DemoService {
-
-    Person getPerson(Person person);
-}
diff --git a/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/support/Person.java b/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/support/Person.java
deleted file mode 100644
index d4570af5ca..0000000000
--- a/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/support/Person.java
+++ /dev/null
@@ -1,52 +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.rpc.support;
-
-import java.io.Serializable;
-
-/**
- * Person.java
- */
-public class Person implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-    private String name;
-    private int age;
-
-    public Person() {}
-
-    public Person(String name, int age) {
-        this.name = name;
-        this.age = age;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public int getAge() {
-        return age;
-    }
-
-    public void setAge(int age) {
-        this.age = age;
-    }
-}
diff --git a/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/resources/log4j2-test.xml b/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] %40.40c:%-3L -| %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/pom.xml b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/pom.xml
deleted file mode 100644
index fb25984343..0000000000
--- a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/pom.xml
+++ /dev/null
@@ -1,42 +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">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-plugin</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-plugin-loadbalance-adaptive</artifactId>
-  <packaging>jar</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-cluster</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
deleted file mode 100644
index 2242a744e4..0000000000
--- a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
+++ /dev/null
@@ -1 +0,0 @@
-adaptiveLoadBalance=org.apache.dubbo.rpc.filter.AdaptiveLoadBalanceFilter
diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance
deleted file mode 100644
index 62ea9a4acb..0000000000
--- a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance
+++ /dev/null
@@ -1 +0,0 @@
-adaptive=org.apache.dubbo.rpc.cluster.loadbalance.AdaptiveLoadBalance
diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer
deleted file mode 100644
index 55fb7df3e3..0000000000
--- a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer
+++ /dev/null
@@ -1 +0,0 @@
-adaptive=org.apache.dubbo.rpc.AdaptiveScopeModelInitializer
diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LoadBalanceBaseTest.java b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LoadBalanceBaseTest.java
deleted file mode 100644
index a1a7e4e57b..0000000000
--- a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LoadBalanceBaseTest.java
+++ /dev/null
@@ -1,319 +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.rpc.cluster.loadbalance;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.extension.ExtensionLoader;
-import org.apache.dubbo.common.utils.JsonUtils;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.RpcInvocation;
-import org.apache.dubbo.rpc.RpcStatus;
-import org.apache.dubbo.rpc.cluster.LoadBalance;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicLong;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-
-import static org.apache.dubbo.rpc.cluster.Constants.DEFAULT_WARMUP;
-import static org.apache.dubbo.rpc.cluster.Constants.DEFAULT_WEIGHT;
-import static org.mockito.BDDMockito.given;
-import static org.mockito.Mockito.mock;
-
-/**
- * RoundRobinLoadBalanceTest
- */
-@SuppressWarnings({"unchecked", "rawtypes"})
-class LoadBalanceBaseTest {
-    Invocation invocation;
-    Invocation genericInvocation;
-    List<Invoker<LoadBalanceBaseTest>> invokers = new ArrayList<Invoker<LoadBalanceBaseTest>>();
-    Invoker<LoadBalanceBaseTest> invoker1;
-    Invoker<LoadBalanceBaseTest> invoker2;
-    Invoker<LoadBalanceBaseTest> invoker3;
-    Invoker<LoadBalanceBaseTest> invoker4;
-    Invoker<LoadBalanceBaseTest> invoker5;
-
-    RpcStatus weightTestRpcStatus1;
-    RpcStatus weightTestRpcStatus2;
-    RpcStatus weightTestRpcStatus3;
-    RpcStatus weightTestRpcStatus5;
-
-    RpcInvocation weightTestInvocation;
-
-    /**
-     * @throws Exception
-     */
-    @BeforeAll
-    public static void setUpBeforeClass() throws Exception {}
-
-    /**
-     * @throws Exception
-     */
-    @BeforeEach
-    public void setUp() throws Exception {
-
-        invocation = mock(Invocation.class);
-        given(invocation.getMethodName()).willReturn("method1");
-        given(invocation.getArguments()).willReturn(new Object[] {"arg1", "arg2", "arg3"});
-
-        genericInvocation = mock(Invocation.class);
-        String methodName = "method1";
-        given(genericInvocation.getMethodName()).willReturn("$invoke");
-        String[] paraTypes = new String[] {String.class.getName(), String.class.getName(), String.class.getName()};
-        Object[] argsObject = new Object[] {"arg1", "arg2", "arg3"};
-        Object[] args = new Object[] {methodName, paraTypes, argsObject};
-        given(genericInvocation.getArguments()).willReturn(args);
-
-        invoker1 = mock(Invoker.class);
-        invoker2 = mock(Invoker.class);
-        invoker3 = mock(Invoker.class);
-        invoker4 = mock(Invoker.class);
-        invoker5 = mock(Invoker.class);
-
-        URL url1 = URL.valueOf("test://127.0.0.1:1/DemoService");
-        URL url2 = URL.valueOf("test://127.0.0.1:2/DemoService");
-        URL url3 = URL.valueOf("test://127.0.0.1:3/DemoService");
-        URL url4 = URL.valueOf("test://127.0.0.1:4/DemoService");
-        URL url5 = URL.valueOf("test://127.0.0.1:5/DemoService");
-
-        given(invoker1.isAvailable()).willReturn(true);
-        given(invoker1.getInterface()).willReturn(LoadBalanceBaseTest.class);
-        given(invoker1.getUrl()).willReturn(url1);
-
-        given(invoker2.isAvailable()).willReturn(true);
-        given(invoker2.getInterface()).willReturn(LoadBalanceBaseTest.class);
-        given(invoker2.getUrl()).willReturn(url2);
-
-        given(invoker3.isAvailable()).willReturn(true);
-        given(invoker3.getInterface()).willReturn(LoadBalanceBaseTest.class);
-        given(invoker3.getUrl()).willReturn(url3);
-
-        given(invoker4.isAvailable()).willReturn(true);
-        given(invoker4.getInterface()).willReturn(LoadBalanceBaseTest.class);
-        given(invoker4.getUrl()).willReturn(url4);
-
-        given(invoker5.isAvailable()).willReturn(true);
-        given(invoker5.getInterface()).willReturn(LoadBalanceBaseTest.class);
-        given(invoker5.getUrl()).willReturn(url5);
-
-        invokers.add(invoker1);
-        invokers.add(invoker2);
-        invokers.add(invoker3);
-        invokers.add(invoker4);
-        invokers.add(invoker5);
-    }
-
-    public Map<Invoker, AtomicLong> getInvokeCounter(int runs, String loadbalanceName) {
-        Map<Invoker, AtomicLong> counter = new ConcurrentHashMap<Invoker, AtomicLong>();
-        LoadBalance lb = getLoadBalance(loadbalanceName);
-        for (Invoker invoker : invokers) {
-            counter.put(invoker, new AtomicLong(0));
-        }
-        URL url = invokers.get(0).getUrl();
-        for (int i = 0; i < runs; i++) {
-            Invoker sinvoker = lb.select(invokers, url, invocation);
-            counter.get(sinvoker).incrementAndGet();
-        }
-        return counter;
-    }
-
-    public Map<Invoker, AtomicLong> getGenericInvokeCounter(int runs, String loadbalanceName) {
-        Map<Invoker, AtomicLong> counter = new ConcurrentHashMap<Invoker, AtomicLong>();
-        LoadBalance lb = getLoadBalance(loadbalanceName);
-        for (Invoker invoker : invokers) {
-            counter.put(invoker, new AtomicLong(0));
-        }
-        URL url = invokers.get(0).getUrl();
-        for (int i = 0; i < runs; i++) {
-            Invoker sinvoker = lb.select(invokers, url, genericInvocation);
-            counter.get(sinvoker).incrementAndGet();
-        }
-        return counter;
-    }
-
-    protected AbstractLoadBalance getLoadBalance(String loadbalanceName) {
-        return (AbstractLoadBalance)
-                ExtensionLoader.getExtensionLoader(LoadBalance.class).getExtension(loadbalanceName);
-    }
-
-    @Test
-    void testLoadBalanceWarmup() {
-        Assertions.assertEquals(1, calculateDefaultWarmupWeight(0));
-        Assertions.assertEquals(1, calculateDefaultWarmupWeight(13));
-        Assertions.assertEquals(1, calculateDefaultWarmupWeight(6 * 1000));
-        Assertions.assertEquals(2, calculateDefaultWarmupWeight(12 * 1000));
-        Assertions.assertEquals(10, calculateDefaultWarmupWeight(60 * 1000));
-        Assertions.assertEquals(50, calculateDefaultWarmupWeight(5 * 60 * 1000));
-        Assertions.assertEquals(50, calculateDefaultWarmupWeight(5 * 60 * 1000 + 23));
-        Assertions.assertEquals(50, calculateDefaultWarmupWeight(5 * 60 * 1000 + 5999));
-        Assertions.assertEquals(51, calculateDefaultWarmupWeight(5 * 60 * 1000 + 6000));
-        Assertions.assertEquals(90, calculateDefaultWarmupWeight(9 * 60 * 1000));
-        Assertions.assertEquals(98, calculateDefaultWarmupWeight(10 * 60 * 1000 - 12 * 1000));
-        Assertions.assertEquals(99, calculateDefaultWarmupWeight(10 * 60 * 1000 - 6 * 1000));
-        Assertions.assertEquals(100, calculateDefaultWarmupWeight(10 * 60 * 1000));
-        Assertions.assertEquals(100, calculateDefaultWarmupWeight(20 * 60 * 1000));
-    }
-
-    /**
-     * handle default data
-     *
-     * @return
-     */
-    private static int calculateDefaultWarmupWeight(int uptime) {
-        return AbstractLoadBalance.calculateWarmupWeight(uptime, DEFAULT_WARMUP, DEFAULT_WEIGHT);
-    }
-
-    /*------------------------------------test invokers for weight---------------------------------------*/
-
-    protected static class InvokeResult {
-        private AtomicLong count = new AtomicLong();
-        private int weight = 0;
-        private int totalWeight = 0;
-
-        public InvokeResult(int weight) {
-            this.weight = weight;
-        }
-
-        public AtomicLong getCount() {
-            return count;
-        }
-
-        public int getWeight() {
-            return weight;
-        }
-
-        public int getTotalWeight() {
-            return totalWeight;
-        }
-
-        public void setTotalWeight(int totalWeight) {
-            this.totalWeight = totalWeight;
-        }
-
-        public int getExpected(int runCount) {
-            return getWeight() * runCount / getTotalWeight();
-        }
-
-        public float getDeltaPercentage(int runCount) {
-            int expected = getExpected(runCount);
-            return Math.abs((expected - getCount().get()) * 100.0f / expected);
-        }
-
-        @Override
-        public String toString() {
-            return JsonUtils.toJson(this);
-        }
-    }
-
-    protected List<Invoker<LoadBalanceBaseTest>> weightInvokers = new ArrayList<Invoker<LoadBalanceBaseTest>>();
-    protected List<Invoker<LoadBalanceBaseTest>> weightInvokersSR = new ArrayList<Invoker<LoadBalanceBaseTest>>();
-
-    protected Invoker<LoadBalanceBaseTest> weightInvoker1;
-    protected Invoker<LoadBalanceBaseTest> weightInvoker2;
-    protected Invoker<LoadBalanceBaseTest> weightInvoker3;
-    protected Invoker<LoadBalanceBaseTest> weightInvokerTmp;
-    protected Invoker<LoadBalanceBaseTest> weightInvoker5;
-
-    @BeforeEach
-    public void before() throws Exception {
-        weightInvoker1 = mock(Invoker.class, Mockito.withSettings().stubOnly());
-        weightInvoker2 = mock(Invoker.class, Mockito.withSettings().stubOnly());
-        weightInvoker3 = mock(Invoker.class, Mockito.withSettings().stubOnly());
-        weightInvokerTmp = mock(Invoker.class, Mockito.withSettings().stubOnly());
-        weightInvoker5 = mock(Invoker.class, Mockito.withSettings().stubOnly());
-
-        weightTestInvocation = new RpcInvocation();
-        weightTestInvocation.setMethodName("test");
-
-        URL url1 = URL.valueOf("test1://127.0.0.1:11/DemoService?weight=1&active=0");
-        URL url2 = URL.valueOf("test2://127.0.0.1:12/DemoService?weight=9&active=0");
-        URL url3 = URL.valueOf("test3://127.0.0.1:13/DemoService?weight=6&active=1");
-        URL urlTmp = URL.valueOf("test4://127.0.0.1:9999/DemoService?weight=11&active=0");
-        URL url5 = URL.valueOf("test5://127.0.0.1:15/DemoService?weight=15&active=0");
-
-        given(weightInvoker1.isAvailable()).willReturn(true);
-        given(weightInvoker1.getInterface()).willReturn(LoadBalanceBaseTest.class);
-        given(weightInvoker1.getUrl()).willReturn(url1);
-
-        given(weightInvoker2.isAvailable()).willReturn(true);
-        given(weightInvoker2.getInterface()).willReturn(LoadBalanceBaseTest.class);
-        given(weightInvoker2.getUrl()).willReturn(url2);
-
-        given(weightInvoker3.isAvailable()).willReturn(true);
-        given(weightInvoker3.getInterface()).willReturn(LoadBalanceBaseTest.class);
-        given(weightInvoker3.getUrl()).willReturn(url3);
-
-        given(weightInvokerTmp.isAvailable()).willReturn(true);
-        given(weightInvokerTmp.getInterface()).willReturn(LoadBalanceBaseTest.class);
-        given(weightInvokerTmp.getUrl()).willReturn(urlTmp);
-
-        given(weightInvoker5.isAvailable()).willReturn(true);
-        given(weightInvoker5.getInterface()).willReturn(LoadBalanceBaseTest.class);
-        given(weightInvoker5.getUrl()).willReturn(url5);
-
-        weightInvokers.add(weightInvoker1);
-        weightInvokers.add(weightInvoker2);
-        weightInvokers.add(weightInvoker3);
-
-        weightInvokersSR.add(weightInvoker1);
-        weightInvokersSR.add(weightInvoker2);
-        weightInvokersSR.add(weightInvoker5);
-
-        weightTestRpcStatus1 = RpcStatus.getStatus(weightInvoker1.getUrl(), weightTestInvocation.getMethodName());
-        weightTestRpcStatus2 = RpcStatus.getStatus(weightInvoker2.getUrl(), weightTestInvocation.getMethodName());
-        weightTestRpcStatus3 = RpcStatus.getStatus(weightInvoker3.getUrl(), weightTestInvocation.getMethodName());
-        weightTestRpcStatus5 = RpcStatus.getStatus(weightInvoker5.getUrl(), weightTestInvocation.getMethodName());
-
-        // weightTestRpcStatus3 active is 1
-        RpcStatus.beginCount(weightInvoker3.getUrl(), weightTestInvocation.getMethodName());
-
-        // weightTestRpcStatus5 shortest response time of success calls is bigger than 0
-        // weightTestRpcStatus5 active is 1
-        RpcStatus.beginCount(weightInvoker5.getUrl(), weightTestInvocation.getMethodName());
-        RpcStatus.endCount(weightInvoker5.getUrl(), weightTestInvocation.getMethodName(), 5000L, true);
-        RpcStatus.beginCount(weightInvoker5.getUrl(), weightTestInvocation.getMethodName());
-    }
-
-    protected Map<Invoker, InvokeResult> getWeightedInvokeResult(int runs, String loadbalanceName) {
-        Map<Invoker, InvokeResult> counter = new ConcurrentHashMap<Invoker, InvokeResult>();
-        AbstractLoadBalance lb = getLoadBalance(loadbalanceName);
-        int totalWeight = 0;
-        for (int i = 0; i < weightInvokers.size(); i++) {
-            InvokeResult invokeResult = new InvokeResult(lb.getWeight(weightInvokers.get(i), weightTestInvocation));
-            counter.put(weightInvokers.get(i), invokeResult);
-            totalWeight += invokeResult.getWeight();
-        }
-        for (InvokeResult invokeResult : counter.values()) {
-            invokeResult.setTotalWeight(totalWeight);
-        }
-        URL url = weightInvokers.get(0).getUrl();
-        for (int i = 0; i < runs; i++) {
-            Invoker sinvoker = lb.select(weightInvokers, url, weightTestInvocation);
-            counter.get(sinvoker).getCount().incrementAndGet();
-        }
-        return counter;
-    }
-}
diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/test/resources/log4j2-test.xml b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] %40.40c:%-3L -| %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-plugin/dubbo-plugin-mock/pom.xml b/dubbo-plugin/dubbo-plugin-mock/pom.xml
deleted file mode 100644
index 3cd3988b70..0000000000
--- a/dubbo-plugin/dubbo-plugin-mock/pom.xml
+++ /dev/null
@@ -1,42 +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">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-plugin</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-plugin-mock</artifactId>
-  <packaging>jar</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-cluster</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/support/MockConfigPostProcessor.java b/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/support/MockConfigPostProcessor.java
deleted file mode 100644
index 72796c786f..0000000000
--- a/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/support/MockConfigPostProcessor.java
+++ /dev/null
@@ -1,81 +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.rpc.support;
-
-import org.apache.dubbo.common.extension.Activate;
-import org.apache.dubbo.common.utils.ConfigUtils;
-import org.apache.dubbo.config.AbstractInterfaceConfig;
-import org.apache.dubbo.config.ConfigPostProcessor;
-import org.apache.dubbo.config.ReferenceConfig;
-import org.apache.dubbo.config.ServiceConfig;
-
-import static org.apache.dubbo.rpc.Constants.RETURN_PREFIX;
-import static org.apache.dubbo.rpc.Constants.THROW_PREFIX;
-
-@Activate
-public class MockConfigPostProcessor implements ConfigPostProcessor {
-    @Override
-    public void postProcessReferConfig(ReferenceConfig referenceConfig) {
-        checkMock(referenceConfig.getInterfaceClass(), referenceConfig);
-    }
-
-    @Override
-    public void postProcessServiceConfig(ServiceConfig serviceConfig) {
-        checkMock(serviceConfig.getInterfaceClass(), serviceConfig);
-    }
-
-    /**
-     * Legitimacy check and setup of local simulated operations. The operations can be a string with Simple operation or
-     * a classname whose {@link Class} implements a particular function
-     *
-     * @param interfaceClass for provider side, it is the {@link Class} of the service that will be exported; for consumer
-     *                       side, it is the {@link Class} of the remote service interface that will be referenced
-     */
-    public static void checkMock(Class<?> interfaceClass, AbstractInterfaceConfig config) {
-        String mock = config.getMock();
-        if (ConfigUtils.isEmpty(mock)) {
-            return;
-        }
-
-        String normalizedMock = MockInvoker.normalizeMock(mock);
-        if (normalizedMock.startsWith(RETURN_PREFIX)) {
-            normalizedMock = normalizedMock.substring(RETURN_PREFIX.length()).trim();
-            try {
-                // Check whether the mock value is legal, if it is illegal, throw exception
-                MockInvoker.parseMockValue(normalizedMock);
-            } catch (Exception e) {
-                throw new IllegalStateException(
-                        "Illegal mock return in <dubbo:service/reference ... " + "mock=\"" + mock + "\" />");
-            }
-        } else if (normalizedMock.startsWith(THROW_PREFIX)) {
-            normalizedMock = normalizedMock.substring(THROW_PREFIX.length()).trim();
-            if (ConfigUtils.isNotEmpty(normalizedMock)) {
-                try {
-                    // Check whether the mock value is legal
-                    MockInvoker.getThrowable(normalizedMock);
-                } catch (Exception e) {
-                    throw new IllegalStateException(
-                            "Illegal mock throw in <dubbo:service/reference ... " + "mock=\"" + mock + "\" />");
-                }
-            }
-        } else {
-            // Check whether the mock class is a implementation of the interfaceClass, and if it has a default
-            // constructor
-            MockInvoker.getMockObject(config.getScopeModel().getExtensionDirector(), normalizedMock, interfaceClass);
-        }
-    }
-}
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.config.ConfigPostProcessor b/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.config.ConfigPostProcessor
deleted file mode 100644
index 7b69d33f7d..0000000000
--- a/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.config.ConfigPostProcessor
+++ /dev/null
@@ -1 +0,0 @@
-mock=org.apache.dubbo.rpc.support.MockConfigPostProcessor
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol b/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol
deleted file mode 100644
index 3c28983b91..0000000000
--- a/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol
+++ /dev/null
@@ -1 +0,0 @@
-mock=org.apache.dubbo.rpc.support.MockProtocol
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster b/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster
deleted file mode 100644
index 75937b5cb3..0000000000
--- a/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster
+++ /dev/null
@@ -1 +0,0 @@
-mock=org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterWrapper
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory b/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
deleted file mode 100644
index d72b777121..0000000000
--- a/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
+++ /dev/null
@@ -1 +0,0 @@
-mock=org.apache.dubbo.rpc.cluster.router.mock.MockStateRouterFactory
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockConfigPostProcessorTest.java b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockConfigPostProcessorTest.java
deleted file mode 100644
index bffab58fc4..0000000000
--- a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockConfigPostProcessorTest.java
+++ /dev/null
@@ -1,54 +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.rpc.support;
-
-import org.apache.dubbo.config.AbstractInterfaceConfig;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-
-class MockConfigPostProcessorTest {
-
-    @Test
-    void checkMock1() {
-        Assertions.assertThrows(IllegalStateException.class, () -> {
-            InterfaceConfig interfaceConfig = new InterfaceConfig();
-            interfaceConfig.setMock("return {a, b}");
-            MockConfigPostProcessor.checkMock(Greeting.class, interfaceConfig);
-        });
-    }
-
-    @Test
-    void checkMock2() {
-        Assertions.assertThrows(IllegalStateException.class, () -> {
-            InterfaceConfig interfaceConfig = new InterfaceConfig();
-            interfaceConfig.setMock(GreetingMock1.class.getName());
-            MockConfigPostProcessor.checkMock(Greeting.class, interfaceConfig);
-        });
-    }
-
-    @Test
-    void checkMock3() {
-        Assertions.assertThrows(IllegalStateException.class, () -> {
-            InterfaceConfig interfaceConfig = new InterfaceConfig();
-            interfaceConfig.setMock(GreetingMock2.class.getName());
-            MockConfigPostProcessor.checkMock(Greeting.class, interfaceConfig);
-        });
-    }
-
-    public static class InterfaceConfig extends AbstractInterfaceConfig {}
-}
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/resources/log4j2-test.xml b/dubbo-plugin/dubbo-plugin-mock/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-plugin/dubbo-plugin-mock/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] %40.40c:%-3L -| %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/pom.xml b/dubbo-plugin/dubbo-plugin-qos-trace/pom.xml
deleted file mode 100644
index 7eea74506a..0000000000
--- a/dubbo-plugin/dubbo-plugin-qos-trace/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">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-plugin</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-plugin-qos-trace</artifactId>
-  <packaging>jar</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-cluster</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-rpc-dubbo</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-remoting-netty4</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/service/DemoService.java b/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/service/DemoService.java
deleted file mode 100644
index 00226cd9fa..0000000000
--- a/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/service/DemoService.java
+++ /dev/null
@@ -1,24 +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.qos.legacy.service;
-
-/**
- * <code>TestService</code>
- */
-public interface DemoService {
-    void sayHello(String name);
-}
diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/src/test/resources/log4j2-test.xml b/dubbo-plugin/dubbo-plugin-qos-trace/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-plugin/dubbo-plugin-qos-trace/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] %40.40c:%-3L -| %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/pom.xml b/dubbo-plugin/dubbo-plugin-router-condition/pom.xml
deleted file mode 100644
index 8593e5e40b..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-condition/pom.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-plugin</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-plugin-router-condition</artifactId>
-  <packaging>jar</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-cluster</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java b/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java
deleted file mode 100644
index 7de1783028..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java
+++ /dev/null
@@ -1,67 +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.rpc.cluster.router;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.Result;
-import org.apache.dubbo.rpc.RpcException;
-
-public class MockInvoker<T> implements Invoker<T> {
-    private boolean available = false;
-    private URL url;
-
-    public MockInvoker() {}
-
-    public MockInvoker(URL url) {
-        super();
-        this.url = url;
-    }
-
-    public MockInvoker(URL url, boolean available) {
-        super();
-        this.url = url;
-        this.available = available;
-    }
-
-    public MockInvoker(boolean available) {
-        this.available = available;
-    }
-
-    @Override
-    public Class<T> getInterface() {
-        return null;
-    }
-
-    public URL getUrl() {
-        return url;
-    }
-
-    @Override
-    public boolean isAvailable() {
-        return available;
-    }
-
-    @Override
-    public Result invoke(Invocation invocation) throws RpcException {
-        return null;
-    }
-
-    @Override
-    public void destroy() {}
-}
diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/test/resources/log4j2-test.xml b/dubbo-plugin/dubbo-plugin-router-condition/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-condition/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] %40.40c:%-3L -| %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/pom.xml b/dubbo-plugin/dubbo-plugin-router-mesh/pom.xml
deleted file mode 100644
index 5c0442961f..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-mesh/pom.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-plugin</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-plugin-router-mesh</artifactId>
-  <packaging>jar</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-cluster</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
deleted file mode 100644
index 8f917c1c85..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
+++ /dev/null
@@ -1 +0,0 @@
-standard-mesh-rule=org.apache.dubbo.rpc.cluster.router.mesh.route.StandardMeshRuleRouterFactory
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer
deleted file mode 100644
index 9aa39990a8..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer
+++ /dev/null
@@ -1 +0,0 @@
-mesh=org.apache.dubbo.rpc.cluster.router.mesh.MeshScopeModelInitializer
diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/log4j2-test.xml b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] %40.40c:%-3L -| %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-plugin/dubbo-plugin-router-script/pom.xml b/dubbo-plugin/dubbo-plugin-router-script/pom.xml
deleted file mode 100644
index 17163c52c8..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-script/pom.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-plugin</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-plugin-router-script</artifactId>
-  <packaging>jar</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-cluster</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory b/dubbo-plugin/dubbo-plugin-router-script/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
deleted file mode 100644
index 5111d289f4..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-script/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
+++ /dev/null
@@ -1 +0,0 @@
-script-app=org.apache.dubbo.rpc.cluster.router.script.config.AppScriptRouterFactory
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java b/dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java
deleted file mode 100644
index 7de1783028..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java
+++ /dev/null
@@ -1,67 +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.rpc.cluster.router;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.Result;
-import org.apache.dubbo.rpc.RpcException;
-
-public class MockInvoker<T> implements Invoker<T> {
-    private boolean available = false;
-    private URL url;
-
-    public MockInvoker() {}
-
-    public MockInvoker(URL url) {
-        super();
-        this.url = url;
-    }
-
-    public MockInvoker(URL url, boolean available) {
-        super();
-        this.url = url;
-        this.available = available;
-    }
-
-    public MockInvoker(boolean available) {
-        this.available = available;
-    }
-
-    @Override
-    public Class<T> getInterface() {
-        return null;
-    }
-
-    public URL getUrl() {
-        return url;
-    }
-
-    @Override
-    public boolean isAvailable() {
-        return available;
-    }
-
-    @Override
-    public Result invoke(Invocation invocation) throws RpcException {
-        return null;
-    }
-
-    @Override
-    public void destroy() {}
-}
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory b/dubbo-plugin/dubbo-plugin-router-script/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
deleted file mode 100644
index 8e551aeccf..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-script/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
+++ /dev/null
@@ -1,2 +0,0 @@
-script=org.apache.dubbo.rpc.cluster.router.script.ScriptStateRouterFactory
-file=org.apache.dubbo.rpc.cluster.router.file.FileStateRouterFactory
diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/test/resources/log4j2-test.xml b/dubbo-plugin/dubbo-plugin-router-script/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-script/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] %40.40c:%-3L -| %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-plugin/dubbo-plugin-router-tag/pom.xml b/dubbo-plugin/dubbo-plugin-router-tag/pom.xml
deleted file mode 100644
index 513e771086..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-tag/pom.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-plugin</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-plugin-router-tag</artifactId>
-  <packaging>jar</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-cluster</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-plugin/dubbo-plugin-router-tag/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory b/dubbo-plugin/dubbo-plugin-router-tag/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
deleted file mode 100644
index 3cde96580e..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-tag/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory
+++ /dev/null
@@ -1 +0,0 @@
-tag=org.apache.dubbo.rpc.cluster.router.tag.TagStateRouterFactory
diff --git a/dubbo-plugin/dubbo-plugin-router-tag/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java b/dubbo-plugin/dubbo-plugin-router-tag/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java
deleted file mode 100644
index 7de1783028..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-tag/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java
+++ /dev/null
@@ -1,67 +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.rpc.cluster.router;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.Result;
-import org.apache.dubbo.rpc.RpcException;
-
-public class MockInvoker<T> implements Invoker<T> {
-    private boolean available = false;
-    private URL url;
-
-    public MockInvoker() {}
-
-    public MockInvoker(URL url) {
-        super();
-        this.url = url;
-    }
-
-    public MockInvoker(URL url, boolean available) {
-        super();
-        this.url = url;
-        this.available = available;
-    }
-
-    public MockInvoker(boolean available) {
-        this.available = available;
-    }
-
-    @Override
-    public Class<T> getInterface() {
-        return null;
-    }
-
-    public URL getUrl() {
-        return url;
-    }
-
-    @Override
-    public boolean isAvailable() {
-        return available;
-    }
-
-    @Override
-    public Result invoke(Invocation invocation) throws RpcException {
-        return null;
-    }
-
-    @Override
-    public void destroy() {}
-}
diff --git a/dubbo-plugin/dubbo-plugin-router-tag/src/test/resources/log4j2-test.xml b/dubbo-plugin/dubbo-plugin-router-tag/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-plugin/dubbo-plugin-router-tag/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] %40.40c:%-3L -| %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-plugin/dubbo-plugin-token/pom.xml b/dubbo-plugin/dubbo-plugin-token/pom.xml
deleted file mode 100644
index b122c2a9e4..0000000000
--- a/dubbo-plugin/dubbo-plugin-token/pom.xml
+++ /dev/null
@@ -1,42 +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">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-plugin</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-plugin-token</artifactId>
-  <packaging>jar</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-cluster</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-plugin/dubbo-plugin-token/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-plugin/dubbo-plugin-token/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
deleted file mode 100644
index eab8ae18e9..0000000000
--- a/dubbo-plugin/dubbo-plugin-token/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
+++ /dev/null
@@ -1 +0,0 @@
-token=org.apache.dubbo.rpc.filter.TokenFilter
diff --git a/dubbo-plugin/dubbo-plugin-token/src/test/resources/log4j2-test.xml b/dubbo-plugin/dubbo-plugin-token/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-plugin/dubbo-plugin-token/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] %40.40c:%-3L -| %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-plugin/dubbo-plugin-tps/pom.xml b/dubbo-plugin/dubbo-plugin-tps/pom.xml
deleted file mode 100644
index d2e92340f8..0000000000
--- a/dubbo-plugin/dubbo-plugin-tps/pom.xml
+++ /dev/null
@@ -1,42 +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">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-plugin</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-plugin-tps</artifactId>
-  <packaging>jar</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-cluster</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-plugin/dubbo-plugin-tps/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
deleted file mode 100644
index ed778d5ca1..0000000000
--- a/dubbo-plugin/dubbo-plugin-tps/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
+++ /dev/null
@@ -1,3 +0,0 @@
-executelimit=org.apache.dubbo.rpc.filter.ExecuteLimitFilter
-active-limit=org.apache.dubbo.rpc.filter.ActiveLimitFilter
-tps=org.apache.dubbo.rpc.filter.TpsLimitFilter
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/BlockMyInvoker.java b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/BlockMyInvoker.java
deleted file mode 100644
index ee6e1bea9f..0000000000
--- a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/BlockMyInvoker.java
+++ /dev/null
@@ -1,63 +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.rpc.support;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.rpc.AppResponse;
-import org.apache.dubbo.rpc.AsyncRpcResult;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Result;
-import org.apache.dubbo.rpc.RpcException;
-
-public class BlockMyInvoker<T> extends MyInvoker<T> {
-
-    private long blockTime = 100;
-
-    public BlockMyInvoker(URL url, long blockTime) {
-        super(url);
-        this.blockTime = blockTime;
-    }
-
-    public BlockMyInvoker(URL url, boolean hasException, long blockTime) {
-        super(url, hasException);
-        this.blockTime = blockTime;
-    }
-
-    @Override
-    public Result invoke(Invocation invocation) throws RpcException {
-        AppResponse result = new AppResponse();
-        if (!hasException) {
-            try {
-                Thread.sleep(blockTime);
-            } catch (InterruptedException e) {
-            }
-            result.setValue("Dubbo");
-        } else {
-            result.setException(new RuntimeException("mocked exception"));
-        }
-
-        return AsyncRpcResult.newDefaultAsyncResult(result, invocation);
-    }
-
-    public long getBlockTime() {
-        return blockTime;
-    }
-
-    public void setBlockTime(long blockTime) {
-        this.blockTime = blockTime;
-    }
-}
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/DemoService.java b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/DemoService.java
deleted file mode 100644
index 82d869a25e..0000000000
--- a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/DemoService.java
+++ /dev/null
@@ -1,21 +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.rpc.support;
-
-public interface DemoService {
-    void sayHello(String name);
-}
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java
deleted file mode 100644
index ffcabd8d47..0000000000
--- a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java
+++ /dev/null
@@ -1,165 +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.rpc.support;
-
-import org.apache.dubbo.rpc.AttachmentsAdapter;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.RpcInvocation;
-import org.apache.dubbo.rpc.model.ServiceModel;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;
-import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;
-
-/**
- * MockInvocation.java
- */
-public class MockInvocation extends RpcInvocation {
-
-    private Map<String, Object> attachments;
-
-    public MockInvocation() {
-        attachments = new HashMap<>();
-        attachments.put(PATH_KEY, "dubbo");
-        attachments.put(GROUP_KEY, "dubbo");
-        attachments.put(VERSION_KEY, "1.0.0");
-        attachments.put(DUBBO_VERSION_KEY, "1.0.0");
-        attachments.put(TOKEN_KEY, "sfag");
-        attachments.put(TIMEOUT_KEY, "1000");
-    }
-
-    @Override
-    public String getTargetServiceUniqueName() {
-        return null;
-    }
-
-    @Override
-    public String getProtocolServiceKey() {
-        return null;
-    }
-
-    public String getMethodName() {
-        return "echo";
-    }
-
-    @Override
-    public String getServiceName() {
-        return "DemoService";
-    }
-
-    public Class<?>[] getParameterTypes() {
-        return new Class[] {String.class};
-    }
-
-    public Object[] getArguments() {
-        return new Object[] {"aa"};
-    }
-
-    public Map<String, String> getAttachments() {
-        return new AttachmentsAdapter.ObjectToStringMap(attachments);
-    }
-
-    @Override
-    public Map<String, Object> getObjectAttachments() {
-        return attachments;
-    }
-
-    @Override
-    public void setAttachment(String key, String value) {
-        setObjectAttachment(key, value);
-    }
-
-    @Override
-    public void setAttachment(String key, Object value) {
-        setObjectAttachment(key, value);
-    }
-
-    @Override
-    public void setObjectAttachment(String key, Object value) {
-        attachments.put(key, value);
-    }
-
-    @Override
-    public void setAttachmentIfAbsent(String key, String value) {
-        setObjectAttachmentIfAbsent(key, value);
-    }
-
-    @Override
-    public void setAttachmentIfAbsent(String key, Object value) {
-        setObjectAttachmentIfAbsent(key, value);
-    }
-
-    @Override
-    public void setObjectAttachmentIfAbsent(String key, Object value) {
-        attachments.put(key, value);
-    }
-
-    public Invoker<?> getInvoker() {
-        return null;
-    }
-
-    @Override
-    public void setServiceModel(ServiceModel serviceModel) {}
-
-    @Override
-    public ServiceModel getServiceModel() {
-        return null;
-    }
-
-    @Override
-    public Object put(Object key, Object value) {
-        return null;
-    }
-
-    @Override
-    public Object get(Object key) {
-        return null;
-    }
-
-    @Override
-    public Map<Object, Object> getAttributes() {
-        return null;
-    }
-
-    public String getAttachment(String key) {
-        return (String) getObjectAttachments().get(key);
-    }
-
-    @Override
-    public Object getObjectAttachment(String key) {
-        return attachments.get(key);
-    }
-
-    public String getAttachment(String key, String defaultValue) {
-        return (String) getObjectAttachments().get(key);
-    }
-
-    @Override
-    public Object getObjectAttachment(String key, Object defaultValue) {
-        Object result = attachments.get(key);
-        if (result == null) {
-            return defaultValue;
-        }
-        return result;
-    }
-}
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java
deleted file mode 100644
index 670a3f7885..0000000000
--- a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java
+++ /dev/null
@@ -1,89 +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.rpc.support;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.rpc.AppResponse;
-import org.apache.dubbo.rpc.AsyncRpcResult;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.Result;
-import org.apache.dubbo.rpc.RpcException;
-
-import java.util.concurrent.CompletableFuture;
-
-/**
- * MockInvoker.java
- */
-public class MyInvoker<T> implements Invoker<T> {
-
-    URL url;
-    Class<T> type;
-    boolean hasException = false;
-    boolean destroyed = false;
-
-    public MyInvoker(URL url) {
-        this.url = url;
-        type = (Class<T>) DemoService.class;
-    }
-
-    public MyInvoker(URL url, boolean hasException) {
-        this.url = url;
-        type = (Class<T>) DemoService.class;
-        this.hasException = hasException;
-    }
-
-    @Override
-    public Class<T> getInterface() {
-        return type;
-    }
-
-    public URL getUrl() {
-        return url;
-    }
-
-    @Override
-    public boolean isAvailable() {
-        return false;
-    }
-
-    @Override
-    public Result invoke(Invocation invocation) throws RpcException {
-        AppResponse result = new AppResponse();
-        if (!hasException) {
-            result.setValue("alibaba");
-        } else {
-            result.setException(new RuntimeException("mocked exception"));
-        }
-
-        return new AsyncRpcResult(CompletableFuture.completedFuture(result), invocation);
-    }
-
-    @Override
-    public void destroy() {
-        destroyed = true;
-    }
-
-    public boolean isDestroyed() {
-        return destroyed;
-    }
-
-    @Override
-    public String toString() {
-        return "MyInvoker.toString()";
-    }
-}
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/RuntimeExceptionInvoker.java b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/RuntimeExceptionInvoker.java
deleted file mode 100644
index 46006ac1b7..0000000000
--- a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/RuntimeExceptionInvoker.java
+++ /dev/null
@@ -1,34 +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.rpc.support;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.rpc.Invocation;
-import org.apache.dubbo.rpc.Result;
-import org.apache.dubbo.rpc.RpcException;
-
-public class RuntimeExceptionInvoker extends MyInvoker {
-
-    public RuntimeExceptionInvoker(URL url) {
-        super(url);
-    }
-
-    @Override
-    public Result invoke(Invocation invocation) throws RpcException {
-        throw new RuntimeException("Runtime exception");
-    }
-}
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/resources/log4j2-test.xml b/dubbo-plugin/dubbo-plugin-tps/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-plugin/dubbo-plugin-tps/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] %40.40c:%-3L -| %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/src/main/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandler.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandler.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-qos-trace/src/main/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandler.java
rename to dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandler.java
diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/src/main/java/org/apache/dubbo/qos/legacy/TraceTelnetHandler.java b/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/legacy/TraceTelnetHandler.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-qos-trace/src/main/java/org/apache/dubbo/qos/legacy/TraceTelnetHandler.java
rename to dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/legacy/TraceTelnetHandler.java
diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.telnet.TelnetHandler b/dubbo-plugin/dubbo-qos/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.telnet.TelnetHandler
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-qos-trace/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.telnet.TelnetHandler
rename to dubbo-plugin/dubbo-qos/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.telnet.TelnetHandler
diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandlerTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandlerTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandlerTest.java
rename to dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandlerTest.java
diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/ProtocolUtils.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/ProtocolUtils.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/ProtocolUtils.java
rename to dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/ProtocolUtils.java
diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/TraceTelnetHandlerTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/TraceTelnetHandlerTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/TraceTelnetHandlerTest.java
rename to dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/TraceTelnetHandlerTest.java
diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/channel/MockChannel.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/channel/MockChannel.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/channel/MockChannel.java
rename to dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/channel/MockChannel.java
diff --git a/dubbo-plugin/pom.xml b/dubbo-plugin/pom.xml
index 924cdd1e46..af13d2673b 100644
--- a/dubbo-plugin/pom.xml
+++ b/dubbo-plugin/pom.xml
@@ -36,23 +36,9 @@
     <module>dubbo-security</module>
     <module>dubbo-spring-security</module>
     <module>dubbo-qos-api</module>
-    <module>dubbo-plugin-cluster-mergeable</module>
     <module>dubbo-native</module>
     <module>dubbo-compiler</module>
-    <module>dubbo-plugin-mock</module>
-    <module>dubbo-plugin-router-script</module>
-    <module>dubbo-plugin-router-mesh</module>
-    <module>dubbo-plugin-router-condition</module>
-    <module>dubbo-plugin-router-tag</module>
-    <module>dubbo-plugin-loadbalance-adaptive</module>
-    <module>dubbo-plugin-access-log</module>
-    <module>dubbo-plugin-tps</module>
-    <module>dubbo-plugin-token</module>
-    <module>dubbo-plugin-generic-invoke</module>
-    <module>dubbo-plugin-context</module>
-    <module>dubbo-plugin-classloader-filter</module>
     <module>dubbo-plugin-proxy-bytebuddy</module>
-    <module>dubbo-plugin-qos-trace</module>
     <module>dubbo-filter-cache</module>
     <module>dubbo-filter-validation</module>
   </modules>
diff --git a/dubbo-registry/dubbo-registry-api/pom.xml b/dubbo-registry/dubbo-registry-api/pom.xml
index 2203a2d9f5..3d40787236 100644
--- a/dubbo-registry/dubbo-registry-api/pom.xml
+++ b/dubbo-registry/dubbo-registry-api/pom.xml
@@ -97,12 +97,6 @@
       <version>${project.parent.version}</version>
     </dependency>
 
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-cluster-mergeable</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>test</scope>
-    </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-slf4j-impl</artifactId>
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/integration/RegistryProtocolTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/integration/RegistryProtocolTest.java
index 60af22506c..41688511a1 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/integration/RegistryProtocolTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/integration/RegistryProtocolTest.java
@@ -29,6 +29,7 @@ import org.apache.dubbo.registry.client.migration.MigrationRuleListener;
 import org.apache.dubbo.rpc.Invoker;
 import org.apache.dubbo.rpc.cluster.Cluster;
 import org.apache.dubbo.rpc.cluster.support.FailoverCluster;
+import org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterWrapper;
 import org.apache.dubbo.rpc.cluster.support.wrapper.ScopeClusterWrapper;
 import org.apache.dubbo.rpc.model.ApplicationModel;
 import org.apache.dubbo.rpc.model.ModuleModel;
@@ -264,12 +265,12 @@ class RegistryProtocolTest {
 
         Assertions.assertTrue(invoker instanceof MigrationInvoker);
         Assertions.assertTrue(((MigrationInvoker<?>) invoker).getCluster() instanceof ScopeClusterWrapper);
-        //        Assertions.assertTrue(((ScopeClusterWrapper) ((MigrationInvoker<?>)
-        // invoker).getCluster()).getCluster() instanceof MockClusterWrapper);
-        //        Assertions.assertTrue(((MockClusterWrapper) ((ScopeClusterWrapper) ((MigrationInvoker<?>)
-        // invoker).getCluster()).getCluster()).getCluster() instanceof FailoverCluster);
         Assertions.assertTrue(
-                (((ScopeClusterWrapper) ((MigrationInvoker<?>) invoker).getCluster())).getCluster()
+                ((ScopeClusterWrapper) ((MigrationInvoker<?>) invoker).getCluster()).getCluster()
+                        instanceof MockClusterWrapper);
+        Assertions.assertTrue(
+                ((MockClusterWrapper) ((ScopeClusterWrapper) ((MigrationInvoker<?>) invoker).getCluster()).getCluster())
+                                .getCluster()
                         instanceof FailoverCluster);
     }
 
diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/AdaptiveMetrics.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AdaptiveMetrics.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/AdaptiveMetrics.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AdaptiveMetrics.java
diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/AdaptiveScopeModelInitializer.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AdaptiveScopeModelInitializer.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/AdaptiveScopeModelInitializer.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AdaptiveScopeModelInitializer.java
diff --git a/dubbo-plugin/dubbo-plugin-access-log/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-access-log/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/ActiveLimitFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ActiveLimitFilter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/ActiveLimitFilter.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ActiveLimitFilter.java
diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/filter/AdaptiveLoadBalanceFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AdaptiveLoadBalanceFilter.java
similarity index 99%
rename from dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/filter/AdaptiveLoadBalanceFilter.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AdaptiveLoadBalanceFilter.java
index b6cd7411b2..2c22a6aa61 100644
--- a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/filter/AdaptiveLoadBalanceFilter.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AdaptiveLoadBalanceFilter.java
@@ -42,7 +42,7 @@ import static org.apache.dubbo.common.constants.CommonConstants.LOADBALANCE_KEY;
 
 /**
  * if the load balance is adaptive ,set attachment to get the metrics of the server
- * @see org.apache.dubbo.rpc.Filter
+ * @see Filter
  * @see org.apache.dubbo.rpc.RpcContext
  */
 @Activate(
diff --git a/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderCallbackFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderCallbackFilter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-classloader-filter/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderCallbackFilter.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderCallbackFilter.java
diff --git a/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderFilter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-classloader-filter/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderFilter.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderFilter.java
diff --git a/dubbo-plugin/dubbo-plugin-context/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-context/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilter.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilter.java
diff --git a/dubbo-plugin/dubbo-plugin-generic-invoke/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-generic-invoke/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java
diff --git a/dubbo-plugin/dubbo-plugin-generic-invoke/src/main/java/org/apache/dubbo/rpc/filter/GenericImplFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericImplFilter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-generic-invoke/src/main/java/org/apache/dubbo/rpc/filter/GenericImplFilter.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericImplFilter.java
diff --git a/dubbo-plugin/dubbo-plugin-token/src/main/java/org/apache/dubbo/rpc/filter/TokenFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/TokenFilter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-token/src/main/java/org/apache/dubbo/rpc/filter/TokenFilter.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/TokenFilter.java
diff --git a/dubbo-plugin/dubbo-plugin-token/src/main/java/org/apache/dubbo/rpc/filter/TokenHeaderFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/TokenHeaderFilter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-token/src/main/java/org/apache/dubbo/rpc/filter/TokenHeaderFilter.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/TokenHeaderFilter.java
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/TpsLimitFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/TpsLimitFilter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/TpsLimitFilter.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/TpsLimitFilter.java
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiter.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiter.java
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/tps/StatItem.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/tps/StatItem.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/tps/StatItem.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/tps/StatItem.java
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/tps/TPSLimiter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/tps/TPSLimiter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/tps/TPSLimiter.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/tps/TPSLimiter.java
diff --git a/dubbo-plugin/dubbo-plugin-access-log/src/main/java/org/apache/dubbo/rpc/support/AccessLogData.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/AccessLogData.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-access-log/src/main/java/org/apache/dubbo/rpc/support/AccessLogData.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/AccessLogData.java
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java
diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/support/MockProtocol.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockProtocol.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/support/MockProtocol.java
rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockProtocol.java
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
index 05e7bd0658..d246ac82e5 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
@@ -1,8 +1,18 @@
 echo=org.apache.dubbo.rpc.filter.EchoFilter
+generic=org.apache.dubbo.rpc.filter.GenericFilter
+genericimpl=org.apache.dubbo.rpc.filter.GenericImplFilter
+token=org.apache.dubbo.rpc.filter.TokenFilter
+accesslog=org.apache.dubbo.rpc.filter.AccessLogFilter
+classloader=org.apache.dubbo.rpc.filter.ClassLoaderFilter
+classloader-callback=org.apache.dubbo.rpc.filter.ClassLoaderCallbackFilter
+context=org.apache.dubbo.rpc.filter.ContextFilter
 exception=org.apache.dubbo.rpc.filter.ExceptionFilter
+executelimit=org.apache.dubbo.rpc.filter.ExecuteLimitFilter
 deprecated=org.apache.dubbo.rpc.filter.DeprecatedFilter
 compatible=org.apache.dubbo.rpc.filter.CompatibleFilter
 timeout=org.apache.dubbo.rpc.filter.TimeoutFilter
+tps=org.apache.dubbo.rpc.filter.TpsLimitFilter
 profiler-server=org.apache.dubbo.rpc.filter.ProfilerServerFilter
 adaptiveLoadBalance=org.apache.dubbo.rpc.filter.AdaptiveLoadBalanceFilter
+active-limit=org.apache.dubbo.rpc.filter.ActiveLimitFilter
 rpc-exception=org.apache.dubbo.rpc.filter.RpcExceptionFilter
diff --git a/dubbo-plugin/dubbo-plugin-token/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.HeaderFilter b/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.HeaderFilter
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-token/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.HeaderFilter
rename to dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.HeaderFilter
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol b/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol
index 8fa26676eb..33f73dafc5 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol
@@ -2,3 +2,4 @@ listener=org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper
 serializationwrapper=org.apache.dubbo.rpc.protocol.ProtocolSerializationWrapper
 securitywrapper=org.apache.dubbo.rpc.protocol.ProtocolSecurityWrapper
 invokercount=org.apache.dubbo.rpc.protocol.InvokerCountWrapper
+mock=org.apache.dubbo.rpc.support.MockProtocol
diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer b/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer
index 3c1f139fa0..b9e9bf1cc8 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer
@@ -1 +1,2 @@
 rpc=org.apache.dubbo.rpc.RpcScopeModelInitializer
+adaptive=org.apache.dubbo.rpc.AdaptiveScopeModelInitializer
diff --git a/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/filter/AccessLogFilterTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/AccessLogFilterTest.java
similarity index 70%
rename from dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/filter/AccessLogFilterTest.java
rename to dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/AccessLogFilterTest.java
index 6b96546cb3..4a326b477e 100644
--- a/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/filter/AccessLogFilterTest.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/AccessLogFilterTest.java
@@ -19,8 +19,8 @@ package org.apache.dubbo.rpc.filter;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
 import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.logger.log4j.Log4jLogger;
-import org.apache.dubbo.common.logger.support.FailsafeLogger;
+import org.apache.dubbo.common.utils.DubboAppender;
+import org.apache.dubbo.common.utils.LogUtil;
 import org.apache.dubbo.rpc.Invocation;
 import org.apache.dubbo.rpc.Invoker;
 import org.apache.dubbo.rpc.support.AccessLogData;
@@ -31,19 +31,11 @@ import java.lang.reflect.Field;
 import java.util.Map;
 import java.util.Queue;
 
-import org.apache.log4j.Appender;
-import org.apache.log4j.Level;
-import org.apache.log4j.spi.LoggingEvent;
-import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
 
 /**
  * AccessLogFilterTest.java
@@ -51,14 +43,6 @@ import static org.mockito.Mockito.verify;
 class AccessLogFilterTest {
 
     private static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger("mock.dubbo.access.log");
-    private static org.apache.log4j.Logger realLogger;
-
-    @BeforeAll
-    public static void setupLogger() {
-        FailsafeLogger failsafeLogger = (FailsafeLogger) logger;
-        Log4jLogger log4j2Logger = (Log4jLogger) failsafeLogger.getLogger();
-        realLogger = log4j2Logger.getLogger();
-    }
 
     AccessLogFilter accessLogFilter = new AccessLogFilter();
 
@@ -85,52 +69,40 @@ class AccessLogFilterTest {
 
     @Test
     void testCustom() {
+        DubboAppender.doStart();
         ErrorTypeAwareLogger originalLogger = AccessLogFilter.logger;
         long originalInterval = AccessLogFilter.getInterval();
 
-        Appender appender = mock(Appender.class);
         AccessLogFilter.setInterval(500);
         AccessLogFilter.logger = logger;
         AccessLogFilter customAccessLogFilter = new AccessLogFilter();
         try {
-            realLogger.addAppender(appender);
             URL url = URL.valueOf("test://test:11/test?accesslog=custom-access.log");
             Invoker<AccessLogFilterTest> invoker = new MyInvoker<>(url);
             Invocation invocation = new MockInvocation();
             customAccessLogFilter.invoke(invoker, invocation);
             sleep();
-            ArgumentCaptor<LoggingEvent> argument = ArgumentCaptor.forClass(LoggingEvent.class);
-            verify(appender, times(2)).doAppend(argument.capture());
-            assertEquals(Level.WARN, argument.getAllValues().get(1).getLevel());
-            assertTrue(argument.getAllValues()
-                    .get(1)
-                    .getRenderedMessage()
-                    .contains("Change of accesslog file path not allowed"));
+            assertEquals(1, LogUtil.findMessage("Change of accesslog file path not allowed"));
         } finally {
             customAccessLogFilter.destroy();
-            realLogger.removeAppender(appender);
+            DubboAppender.clear();
             AccessLogFilter.logger = originalLogger;
             AccessLogFilter.setInterval(originalInterval);
         }
 
-        Appender appender2 = mock(Appender.class);
         AccessLogFilter.setInterval(500);
         AccessLogFilter.logger = logger;
         AccessLogFilter customAccessLogFilter2 = new AccessLogFilter();
         try {
-            realLogger.addAppender(appender2);
             URL url2 = URL.valueOf("test://test:11/test?accesslog=custom-access.log&accesslog.fixed.path=false");
             Invoker<AccessLogFilterTest> invoker = new MyInvoker<>(url2);
             Invocation invocation = new MockInvocation();
             customAccessLogFilter2.invoke(invoker, invocation);
             sleep();
-            ArgumentCaptor<LoggingEvent> argument = ArgumentCaptor.forClass(LoggingEvent.class);
-            verify(appender2, times(2)).doAppend(argument.capture());
-            assertEquals(Level.WARN, argument.getAllValues().get(1).getLevel());
-            assertTrue(argument.getAllValues().get(1).getRenderedMessage().contains("Accesslog file path changed to"));
+            assertEquals(1, LogUtil.findMessage("Accesslog file path changed to"));
         } finally {
             customAccessLogFilter2.destroy();
-            realLogger.removeAppender(appender2);
+            DubboAppender.clear();
             AccessLogFilter.logger = originalLogger;
             AccessLogFilter.setInterval(originalInterval);
         }
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/ActiveLimitFilterTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ActiveLimitFilterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/ActiveLimitFilterTest.java
rename to dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ActiveLimitFilterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/filter/ClassLoaderFilterTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ClassLoaderFilterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/filter/ClassLoaderFilterTest.java
rename to dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ClassLoaderFilterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/filter/ContextFilterTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ContextFilterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/filter/ContextFilterTest.java
rename to dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ContextFilterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilterTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilterTest.java
rename to dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/filter/GenericFilterTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/GenericFilterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/filter/GenericFilterTest.java
rename to dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/GenericFilterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/filter/GenericImplFilterTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/GenericImplFilterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/filter/GenericImplFilterTest.java
rename to dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/GenericImplFilterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-token/src/test/java/org/apache/dubbo/rpc/filter/TokenFilterTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/TokenFilterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-token/src/test/java/org/apache/dubbo/rpc/filter/TokenFilterTest.java
rename to dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/TokenFilterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiterTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiterTest.java
rename to dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/tps/StatItemTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/tps/StatItemTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/tps/StatItemTest.java
rename to dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/tps/StatItemTest.java
diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/tps/TpsLimitFilterTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/tps/TpsLimitFilterTest.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/tps/TpsLimitFilterTest.java
rename to dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/tps/TpsLimitFilterTest.java
diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java b/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-qos-trace/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java
rename to dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java
diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-rpc/dubbo-rpc-dubbo/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-qos-trace/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
rename to dubbo-rpc/dubbo-rpc-dubbo/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter
diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/MockChannel.java b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/MockChannel.java
similarity index 100%
rename from dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/MockChannel.java
rename to dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/MockChannel.java
diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilterTest.java b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilterTest.java
similarity index 96%
rename from dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilterTest.java
rename to dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilterTest.java
index f9a87c8274..11ead27a51 100644
--- a/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilterTest.java
+++ b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilterTest.java
@@ -18,11 +18,11 @@ package org.apache.dubbo.rpc.protocol.dubbo.filter;
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.utils.CollectionUtils;
-import org.apache.dubbo.qos.legacy.service.DemoService;
 import org.apache.dubbo.remoting.Channel;
 import org.apache.dubbo.rpc.Invocation;
 import org.apache.dubbo.rpc.Invoker;
 import org.apache.dubbo.rpc.Result;
+import org.apache.dubbo.rpc.protocol.dubbo.support.DemoService;
 
 import java.lang.reflect.Field;
 import java.util.List;
@@ -107,7 +107,7 @@ class TraceFilterTest {
         // test invoke
         filter.invoke(mockInvoker, mockInvocation);
         String message = listToString(mockChannel.getReceivedObjects());
-        String expectMessage = "org.apache.dubbo.qos.legacy.service.DemoService.sayHello([]) -> \"result\"";
+        String expectMessage = "org.apache.dubbo.rpc.protocol.dubbo.support.DemoService.sayHello([]) -> \"result\"";
         System.out.println("actual message: " + message);
         Assertions.assertTrue(message.contains(expectMessage));
         Assertions.assertTrue(message.contains("elapsed:"));
diff --git a/dubbo-test/dubbo-dependencies-all/pom.xml b/dubbo-test/dubbo-dependencies-all/pom.xml
index fc6d76eed8..bac453aa16 100644
--- a/dubbo-test/dubbo-dependencies-all/pom.xml
+++ b/dubbo-test/dubbo-dependencies-all/pom.xml
@@ -251,96 +251,12 @@
       <version>${project.version}</version>
     </dependency>
 
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-cluster-mergeable</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-mock</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-router-script</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-router-mesh</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-router-condition</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-router-tag</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-loadbalance-adaptive</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-access-log</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-tps</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-token</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-generic-invoke</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-context</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-classloader-filter</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
     <dependency>
       <groupId>org.apache.dubbo</groupId>
       <artifactId>dubbo-plugin-proxy-bytebuddy</artifactId>
       <version>${project.version}</version>
     </dependency>
 
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-plugin-qos-trace</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
     <!-- registry -->
     <dependency>
       <groupId>org.apache.dubbo</groupId>
diff --git a/dubbo-xds/src/test/resources/log4j2-test.xml b/dubbo-xds/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-xds/src/test/resources/log4j2-test.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] %40.40c:%-3L -| %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>