This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.1
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.1 by this push:
new 7705811ff5 Add coverage module & file lint test (#10920)
7705811ff5 is described below
commit 7705811ff5c10f1b7a6492ea712331bb2f585607
Author: Albumen Kevin <[email protected]>
AuthorDate: Sat Nov 12 14:39:33 2022 +0800
Add coverage module & file lint test (#10920)
---
Jenkinsfile.sonar | 8 +-
.../dubbo-demo-spring-boot-consumer/pom.xml | 1 +
.../dubbo-demo-spring-boot-provider/pom.xml | 1 +
dubbo-distribution/dubbo-all/pom.xml | 240 +++++++---
dubbo-distribution/dubbo-bom/pom.xml | 295 +++++++++++--
...g.apache.dubbo.registry.client.ServiceDiscovery | 1 -
.../metadata/rest/ServiceRestMetadataResolver.java | 3 +
dubbo-native-plugin/pom.xml | 2 +-
...istry.client.metadata.SubscribedURLsSynthesizer | 1 -
dubbo-test/dubbo-dependencies-all/pom.xml | 338 ++++++++++++++
dubbo-test/{ => dubbo-test-modules}/pom.xml | 42 +-
.../java/org/apache/dubbo/dependency/FileTest.java | 491 +++++++++++++++++++++
dubbo-test/pom.xml | 2 +
...g.apache.dubbo.registry.client.ServiceDiscovery | 1 -
pom.xml | 8 +
15 files changed, 1283 insertions(+), 151 deletions(-)
diff --git a/Jenkinsfile.sonar b/Jenkinsfile.sonar
index b16366afb0..52677cb229 100644
--- a/Jenkinsfile.sonar
+++ b/Jenkinsfile.sonar
@@ -17,7 +17,9 @@
*
*/
pipeline {
- agent any
+ agent {
+ label 'ubuntu'
+ }
tools {
maven 'maven_3_latest'
@@ -34,12 +36,12 @@ pipeline {
if ( env.BRANCH_NAME.startsWith("PR-") ) {
// this is a pull request
withCredentials([string(credentialsId:
'sonarcloud-token', variable: 'SONAR_TOKEN')]) {
- sh 'mvn --batch-mode --no-snapshot-updates -e
--no-transfer-progress --fail-fast clean verify sonar:sonar -Pjacoco
-Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=apache
-Dsonar.projectKey=apache_dubbo -Dsonar.pullrequest.branch=${CHANGE_BRANCH}
-Dsonar.pullrequest.base=${CHANGE_TARGET} -Dsonar.pullrequest.key=${CHANGE_ID}
-Dsonar.login=${SONAR_TOKEN}'
+ sh 'mvn --batch-mode --no-snapshot-updates -e
--no-transfer-progress --fail-fast clean verify sonar:sonar -Pjacoco
-Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=apache
-Dsonar.projectKey=apache_dubbo
-Dsonar.coverage.jacoco.xmlReportPaths=dubbo-test/dubbo-dependencies-all/target/site/jacoco-aggregate/jacoco.xml
-Dsonar.pullrequest.branch=${CHANGE_BRANCH}
-Dsonar.pullrequest.base=${CHANGE_TARGET} -Dsonar.pullrequest.key=${CHANGE_ID}
-Dsonar.login= [...]
}
} else {
// this is just a branch
withCredentials([string(credentialsId:
'sonarcloud-token', variable: 'SONAR_TOKEN')]) {
- sh 'mvn --batch-mode --no-snapshot-updates -e
--no-transfer-progress --fail-fast clean verify sonar:sonar -Pjacoco
-Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=apache
-Dsonar.projectKey=apache_dubbo -Dsonar.branch.name=${BRANCH_NAME}
-Dsonar.login=${SONAR_TOKEN}'
+ sh 'mvn --batch-mode --no-snapshot-updates -e
--no-transfer-progress --fail-fast clean verify sonar:sonar -Pjacoco
-Dsonar.host.url=https://sonarcloud.io -Dsonar.organization=apache
-Dsonar.projectKey=apache_dubbo
-Dsonar.coverage.jacoco.xmlReportPaths=dubbo-test/dubbo-dependencies-all/target/site/jacoco-aggregate/jacoco.xml
-Dsonar.branch.name=${BRANCH_NAME} -Dsonar.login=${SONAR_TOKEN}'
}
}
}
diff --git
a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/pom.xml
b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/pom.xml
index 9eb606818c..ba276f26e3 100644
--- a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/pom.xml
+++ b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-consumer/pom.xml
@@ -32,6 +32,7 @@
<maven.compiler.target>8</maven.compiler.target>
<slf4j-log4j12.version>1.7.25</slf4j-log4j12.version>
<spring-boot.version>2.3.1.RELEASE</spring-boot.version>
+ <skip_maven_deploy>true</skip_maven_deploy>
</properties>
<dependencies>
diff --git
a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/pom.xml
b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/pom.xml
index c31ff38435..0116283824 100644
--- a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/pom.xml
+++ b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/pom.xml
@@ -32,6 +32,7 @@
<maven.compiler.target>8</maven.compiler.target>
<slf4j-log4j12.version>1.7.25</slf4j-log4j12.version>
<spring-boot.version>2.3.1.RELEASE</spring-boot.version>
+ <skip_maven_deploy>true</skip_maven_deploy>
</properties>
<dependencies>
diff --git a/dubbo-distribution/dubbo-all/pom.xml
b/dubbo-distribution/dubbo-all/pom.xml
index 09d4ef8a99..eb8efb463d 100644
--- a/dubbo-distribution/dubbo-all/pom.xml
+++ b/dubbo-distribution/dubbo-all/pom.xml
@@ -31,146 +31,167 @@
<skip_maven_deploy>false</skip_maven_deploy>
</properties>
<dependencies>
+ <!-- cluster -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-config-api</artifactId>
+ <artifactId>dubbo-cluster</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+
+ <!-- common -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-config-spring</artifactId>
+ <artifactId>dubbo-common</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+
+ <!-- compatible -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-cluster</artifactId>
+ <artifactId>dubbo-compatible</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+
+ <!-- config -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-common</artifactId>
+ <artifactId>dubbo-config-api</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-remoting-api</artifactId>
+ <artifactId>dubbo-config-spring</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+
+ <!-- config-center -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-remoting-netty</artifactId>
+ <artifactId>dubbo-configcenter-zookeeper</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-remoting-netty4</artifactId>
+ <artifactId>dubbo-configcenter-apollo</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-remoting-zookeeper</artifactId>
+ <artifactId>dubbo-configcenter-nacos</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+
+ <!-- container -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-remoting-zookeeper-curator5</artifactId>
+ <artifactId>dubbo-container-api</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-rpc-api</artifactId>
+ <artifactId>dubbo-container-spring</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+
+ <!-- filter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-rpc-dubbo</artifactId>
+ <artifactId>dubbo-filter-cache</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-rpc-injvm</artifactId>
+ <artifactId>dubbo-filter-validation</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+
+ <!-- kubernetes -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-rpc-rest</artifactId>
+ <artifactId>dubbo-kubernetes</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+
+ <!-- metadata -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-rpc-grpc</artifactId>
+ <artifactId>dubbo-metadata-api</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-rpc-triple</artifactId>
+ <artifactId>dubbo-metadata-report-zookeeper</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-api</artifactId>
+ <artifactId>dubbo-metadata-report-nacos</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-multicast</artifactId>
+ <artifactId>dubbo-metadata-report-redis</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-zookeeper</artifactId>
+ <artifactId>dubbo-metadata-definition-protobuf</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+
+ <!-- metrics -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-nacos</artifactId>
+ <artifactId>dubbo-metrics-api</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-multiple</artifactId>
+ <artifactId>dubbo-metrics-prometheus</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+
+ <!-- monitor -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-monitor-api</artifactId>
@@ -185,9 +206,11 @@
<scope>compile</scope>
<optional>true</optional>
</dependency>
+
+ <!-- plugin -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-container-spring</artifactId>
+ <artifactId>dubbo-auth</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
@@ -201,138 +224,183 @@
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-serialization-api</artifactId>
+ <artifactId>dubbo-reactive</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+
+ <!-- registry -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-serialization-hessian2</artifactId>
+ <artifactId>dubbo-registry-api</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-serialization-fastjson2</artifactId>
+ <artifactId>dubbo-registry-multicast</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-serialization-jdk</artifactId>
+ <artifactId>dubbo-registry-multiple</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-configcenter-zookeeper</artifactId>
+ <artifactId>dubbo-registry-nacos</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-configcenter-apollo</artifactId>
+ <artifactId>dubbo-registry-zookeeper</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+
+ <!-- remoting -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-configcenter-nacos</artifactId>
+ <artifactId>dubbo-remoting-api</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-compatible</artifactId>
+ <artifactId>dubbo-remoting-http</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>hessian-lite</artifactId>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-remoting-netty</artifactId>
+ <version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
- <!-- metadata -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-metadata-api</artifactId>
+ <artifactId>dubbo-remoting-netty4</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-metadata-report-zookeeper</artifactId>
+ <artifactId>dubbo-remoting-zookeeper</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-metadata-report-nacos</artifactId>
+ <artifactId>dubbo-remoting-zookeeper-curator5</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+
+ <!-- rpc -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-metadata-report-redis</artifactId>
+ <artifactId>dubbo-rpc-api</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-auth</artifactId>
+ <artifactId>dubbo-rpc-dubbo</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-filter-cache</artifactId>
+ <artifactId>dubbo-rpc-injvm</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-filter-validation</artifactId>
+ <artifactId>dubbo-rpc-rest</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-kubernetes</artifactId>
+ <artifactId>dubbo-rpc-grpc</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-xds</artifactId>
+ <artifactId>dubbo-rpc-triple</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+
+ <!-- serialization -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-reactive</artifactId>
+ <artifactId>dubbo-serialization-api</artifactId>
+ <version>${project.version}</version>
+ <scope>compile</scope>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-serialization-hessian2</artifactId>
+ <version>${project.version}</version>
+ <scope>compile</scope>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-serialization-fastjson2</artifactId>
+ <version>${project.version}</version>
+ <scope>compile</scope>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-serialization-jdk</artifactId>
+ <version>${project.version}</version>
+ <scope>compile</scope>
+ <optional>true</optional>
+ </dependency>
+
+ <!-- xds -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-xds</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
+ <!-- Hessian Lite -->
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>hessian-lite</artifactId>
+ <scope>compile</scope>
+ <optional>true</optional>
+ </dependency>
<!-- Transitive dependencies -->
<dependency>
@@ -388,6 +456,7 @@
<scope>test</scope>
<optional>true</optional>
</dependency>
+
</dependencies>
<build>
<plugins>
@@ -412,32 +481,22 @@
<include>org.apache.dubbo:dubbo-compatible</include>
<include>org.apache.dubbo:dubbo-config-api</include>
<include>org.apache.dubbo:dubbo-config-spring</include>
-
<include>org.apache.dubbo:dubbo-config</include>
<include>org.apache.dubbo:dubbo-configcenter-apollo</include>
<include>org.apache.dubbo:dubbo-configcenter-nacos</include>
<include>org.apache.dubbo:dubbo-configcenter-zookeeper</include>
-
<include>org.apache.dubbo:dubbo-configcenter</include>
<include>org.apache.dubbo:dubbo-container-api</include>
<include>org.apache.dubbo:dubbo-container-spring</include>
-
<include>org.apache.dubbo:dubbo-container</include>
<include>org.apache.dubbo:dubbo-filter-cache</include>
<include>org.apache.dubbo:dubbo-filter-validation</include>
-
<include>org.apache.dubbo:dubbo-filter</include>
<include>org.apache.dubbo:dubbo-metadata-api</include>
<include>org.apache.dubbo:dubbo-metadata-definition-protobuf</include>
-
<include>org.apache.dubbo:dubbo-metadata-processor</include>
<include>org.apache.dubbo:dubbo-metadata-report-nacos</include>
<include>org.apache.dubbo:dubbo-metadata-report-redis</include>
<include>org.apache.dubbo:dubbo-metadata-report-zookeeper</include>
-
<include>org.apache.dubbo:dubbo-metadata</include>
<include>org.apache.dubbo:dubbo-metrics-api</include>
<include>org.apache.dubbo:dubbo-metrics-prometheus</include>
-
<include>org.apache.dubbo:dubbo-metrics</include>
<include>org.apache.dubbo:dubbo-monitor-api</include>
<include>org.apache.dubbo:dubbo-monitor-default</include>
-
<include>org.apache.dubbo:dubbo-monitor</include>
-
<include>org.apache.dubbo:dubbo-native</include>
-
<include>org.apache.dubbo:dubbo-plugin</include>
<include>org.apache.dubbo:dubbo-qos</include>
<include>org.apache.dubbo:dubbo-reactive</include>
<include>org.apache.dubbo:dubbo-registry-api</include>
@@ -445,27 +504,22 @@
<include>org.apache.dubbo:dubbo-registry-multiple</include>
<include>org.apache.dubbo:dubbo-registry-nacos</include>
<include>org.apache.dubbo:dubbo-registry-zookeeper</include>
-
<include>org.apache.dubbo:dubbo-registry</include>
<include>org.apache.dubbo:dubbo-remoting-api</include>
<include>org.apache.dubbo:dubbo-remoting-http</include>
<include>org.apache.dubbo:dubbo-remoting-netty4</include>
<include>org.apache.dubbo:dubbo-remoting-netty</include>
<include>org.apache.dubbo:dubbo-remoting-zookeeper</include>
<include>org.apache.dubbo:dubbo-remoting-zookeeper-curator5</include>
-
<include>org.apache.dubbo:dubbo-remoting</include>
<include>org.apache.dubbo:dubbo-rpc-api</include>
<include>org.apache.dubbo:dubbo-rpc-dubbo</include>
<include>org.apache.dubbo:dubbo-rpc-grpc</include>
<include>org.apache.dubbo:dubbo-rpc-injvm</include>
<include>org.apache.dubbo:dubbo-rpc-rest</include>
<include>org.apache.dubbo:dubbo-rpc-triple</include>
-
<include>org.apache.dubbo:dubbo-rpc</include>
<include>org.apache.dubbo:dubbo-serialization-api</include>
<include>org.apache.dubbo:dubbo-serialization-hessian2</include>
<include>org.apache.dubbo:dubbo-serialization-fastjson2</include>
<include>org.apache.dubbo:dubbo-serialization-jdk</include>
-
<include>org.apache.dubbo:dubbo-serialization</include>
-
<include>org.apache.dubbo:dubbo-compiler</include>
<include>org.apache.dubbo:dubbo-kubernetes</include>
<include>org.apache.dubbo:dubbo-xds</include>
</includes>
@@ -801,12 +855,6 @@
META-INF/dubbo/internal/org.apache.dubbo.registry.client.RegistryClusterIdentifier
</resource>
</transformer>
- <transformer
-
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
- <resource>
-
META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery
- </resource>
- </transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>
@@ -825,12 +873,6 @@
META-INF/dubbo/internal/org.apache.dubbo.registry.client.metadata.MetadataServiceURLBuilder
</resource>
</transformer>
- <transformer
-
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
- <resource>
-
META-INF/dubbo/internal/org.apache.dubbo.registry.client.metadata.SubscribedURLsSynthesizer
- </resource>
- </transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>
@@ -1104,19 +1146,73 @@
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>
-
META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.tri.Compressor
+
META-INF/dubbo/internal/org.apache.dubbo.rpc.PathResolver
</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>
-
META-INF/dubbo/internal/org.apache.dubbo.rpc.PathResolver
+
META-INF/dubbo/internal/org.apache.dubbo.validation.Validation
</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>
-
META-INF/dubbo/internal/org.apache.dubbo.validation.Validation
+
META-INF/dubbo/internal/org.apache.dubbo.registry.client.metadata.ServiceInstanceNotificationCustomizer
+ </resource>
+ </transformer>
+ <transformer
+
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+ <resource>
+
META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.tri.compressor.Compressor
+ </resource>
+ </transformer>
+ <transformer
+
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+ <resource>
+
META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.tri.compressor.DeCompressor
+ </resource>
+ </transformer>
+ <transformer
+
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+ <resource>
+
META-INF/dubbo/internal/org.apache.dubbo.common.metrics.service.MetricsService
+ </resource>
+ </transformer>
+ <transformer
+
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+ <resource>
+
META-INF/dubbo/internal/org.apache.dubbo.common.metrics.service.MetricsServiceExporter
+ </resource>
+ </transformer>
+ <transformer
+
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+ <resource>
+
META-INF/dubbo/internal/org.apache.dubbo.common.metrics.MetricsReporterFactory
+ </resource>
+ </transformer>
+ <transformer
+
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+ <resource>
+
META-INF/dubbo/internal/org.apache.dubbo.common.threadpool.event.ThreadPoolExhaustedListener
+ </resource>
+ </transformer>
+ <transformer
+
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+ <resource>
+
META-INF/dubbo/internal/org.apache.dubbo.remoting.api.pu.PortUnificationTransporter
+ </resource>
+ </transformer>
+ <transformer
+
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+ <resource>
+
META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.mesh.util.TracingContextProvider
+ </resource>
+ </transformer>
+ <transformer
+
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+ <resource>
+
META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.ServiceRestMetadataResolver
</resource>
</transformer>
</transformers>
diff --git a/dubbo-distribution/dubbo-bom/pom.xml
b/dubbo-distribution/dubbo-bom/pom.xml
index 013d842f75..4711f43dd3 100644
--- a/dubbo-distribution/dubbo-bom/pom.xml
+++ b/dubbo-distribution/dubbo-bom/pom.xml
@@ -33,19 +33,38 @@
<dependencyManagement>
<dependencies>
+ <!-- cluster -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo</artifactId>
+ <artifactId>dubbo-cluster</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <!-- common -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-cluster</artifactId>
+ <artifactId>dubbo-common</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <!-- compatible -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-common</artifactId>
+ <artifactId>dubbo-compatible</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <!-- compiler -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-compiler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <!-- config -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-config</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
@@ -58,99 +77,169 @@
<artifactId>dubbo-config-spring</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <!-- config-center -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-filter-cache</artifactId>
+ <artifactId>dubbo-configcenter</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-filter-validation</artifactId>
+ <artifactId>dubbo-configcenter-zookeeper</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-remoting-api</artifactId>
+ <artifactId>dubbo-configcenter-apollo</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-remoting-http</artifactId>
+ <artifactId>dubbo-configcenter-nacos</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <!-- container -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-remoting-netty</artifactId>
+ <artifactId>dubbo-container</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-remoting-netty4</artifactId>
+ <artifactId>dubbo-container-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-remoting-zookeeper</artifactId>
+ <artifactId>dubbo-container-spring</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <!-- dependencies -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-remoting-zookeeper-curator5</artifactId>
+ <artifactId>dubbo-dependencies</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-rpc-api</artifactId>
+ <artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-rpc-dubbo</artifactId>
+ <artifactId>dubbo-dependencies-zookeeper-curator5</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <!-- dependencies-bom -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-rpc-injvm</artifactId>
+ <artifactId>dubbo-dependencies-bom</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <!-- distribution -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-rpc-rest</artifactId>
+ <artifactId>dubbo-distribution</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-rpc-grpc</artifactId>
+ <artifactId>dubbo</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-rpc-triple</artifactId>
+ <artifactId>dubbo-bom</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <!-- filter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-api</artifactId>
+ <artifactId>dubbo-filter</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-multiple</artifactId>
+ <artifactId>dubbo-filter-cache</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-multicast</artifactId>
+ <artifactId>dubbo-filter-validation</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <!-- kubernetes -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-zookeeper</artifactId>
+ <artifactId>dubbo-kubernetes</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <!-- metadata -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-registry-nacos</artifactId>
+ <artifactId>dubbo-metadata</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metadata-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metadata-report-zookeeper</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metadata-report-nacos</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metadata-report-redis</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metadata-processor</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metadata-definition-protobuf</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <!-- metrics -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metrics</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metrics-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metrics-prometheus</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <!-- monitor -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-monitor</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
@@ -163,23 +252,27 @@
<artifactId>dubbo-monitor-default</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <!-- native -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-container-api</artifactId>
+ <artifactId>dubbo-native</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <!-- native-plugin -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-container-spring</artifactId>
+ <artifactId>dubbo-native-plugin</artifactId>
<version>${project.version}</version>
</dependency>
+
+ <!-- plugin -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-reactive</artifactId>
+ <artifactId>dubbo-plugin</artifactId>
<version>${project.version}</version>
</dependency>
-
- <!-- dubbo plugin -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-auth</artifactId>
@@ -190,97 +283,151 @@
<artifactId>dubbo-qos</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-reactive</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <!-- registry -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-serialization-api</artifactId>
+ <artifactId>dubbo-registry</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-serialization-hessian2</artifactId>
+ <artifactId>dubbo-registry-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-serialization-fastjson2</artifactId>
+ <artifactId>dubbo-registry-multicast</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-serialization-jdk</artifactId>
+ <artifactId>dubbo-registry-multiple</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-serialization-protobuf</artifactId>
+ <artifactId>dubbo-registry-nacos</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-compatible</artifactId>
+ <artifactId>dubbo-registry-zookeeper</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- metadata -->
+ <!-- remoting -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-metadata-api</artifactId>
+ <artifactId>dubbo-remoting</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-metadata-report-zookeeper</artifactId>
+ <artifactId>dubbo-remoting-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-metadata-report-nacos</artifactId>
+ <artifactId>dubbo-remoting-http</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-metadata-report-redis</artifactId>
+ <artifactId>dubbo-remoting-netty</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-metadata-processor</artifactId>
+ <artifactId>dubbo-remoting-netty4</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-metadata-definition-protobuf</artifactId>
+ <artifactId>dubbo-remoting-zookeeper</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-remoting-zookeeper-curator5</artifactId>
<version>${project.version}</version>
</dependency>
- <!-- config-center -->
+ <!-- rpc -->
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-configcenter-zookeeper</artifactId>
+ <artifactId>dubbo-rpc</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-configcenter-apollo</artifactId>
+ <artifactId>dubbo-rpc-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-configcenter-nacos</artifactId>
+ <artifactId>dubbo-rpc-dubbo</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-kubernetes</artifactId>
+ <artifactId>dubbo-rpc-injvm</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-xds</artifactId>
+ <artifactId>dubbo-rpc-rest</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-rpc-grpc</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-rpc-triple</artifactId>
<version>${project.version}</version>
</dependency>
+ <!-- serialization -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-serialization</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-serialization-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-serialization-hessian2</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-serialization-fastjson2</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-serialization-jdk</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <!-- spring-boot -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-spring-boot</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-actuator</artifactId>
@@ -291,6 +438,11 @@
<artifactId>dubbo-spring-boot-autoconfigure</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-spring-boot-compatible</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-actuator-compatible</artifactId>
@@ -309,8 +461,57 @@
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
- <version>${project.version}</version>
<type>pom</type>
+ <version>${project.version}</version>
+ </dependency>
+
+ <!-- test -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-test</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-test-check</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-test-common</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-test-modules</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-test-spring</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-test-spring3.2</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-test-spring4.1</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-test-spring4.2</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <!-- xds -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-xds</artifactId>
+ <version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
diff --git
a/dubbo-kubernetes/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery
b/dubbo-kubernetes/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery
deleted file mode 100644
index 3e1b88e44c..0000000000
---
a/dubbo-kubernetes/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery
+++ /dev/null
@@ -1 +0,0 @@
-kubernetes=org.apache.dubbo.registry.kubernetes.KubernetesServiceDiscovery
\ No newline at end of file
diff --git
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadataResolver.java
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadataResolver.java
index 0c1ece882a..41ea25d999 100644
---
a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadataResolver.java
+++
b/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadataResolver.java
@@ -16,12 +16,15 @@
*/
package org.apache.dubbo.metadata.rest;
+import org.apache.dubbo.common.extension.SPI;
+
/**
* The interface to resolve the {@link ServiceRestMetadata REST metadata} from
the specified
* Dubbo Service interface or type.
*
* @since 2.7.6
*/
+@SPI
public interface ServiceRestMetadataResolver {
/**
diff --git a/dubbo-native-plugin/pom.xml b/dubbo-native-plugin/pom.xml
index 1410c737d0..ba4d9d7098 100644
--- a/dubbo-native-plugin/pom.xml
+++ b/dubbo-native-plugin/pom.xml
@@ -56,7 +56,7 @@
<dependency>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo</artifactId>
+ <artifactId>dubbo-common</artifactId>
<version>${project.version}</version>
</dependency>
diff --git
a/dubbo-registry/dubbo-registry-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.metadata.SubscribedURLsSynthesizer
b/dubbo-registry/dubbo-registry-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.metadata.SubscribedURLsSynthesizer
deleted file mode 100644
index 5fc303da86..0000000000
---
a/dubbo-registry/dubbo-registry-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.metadata.SubscribedURLsSynthesizer
+++ /dev/null
@@ -1 +0,0 @@
-rest=org.apache.dubbo.registry.client.metadata.RestProtocolSubscribedURLsSynthesizer
\ No newline at end of file
diff --git a/dubbo-test/dubbo-dependencies-all/pom.xml
b/dubbo-test/dubbo-dependencies-all/pom.xml
new file mode 100644
index 0000000000..83374e72df
--- /dev/null
+++ b/dubbo-test/dubbo-dependencies-all/pom.xml
@@ -0,0 +1,338 @@
+<?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/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>dubbo-test</artifactId>
+ <groupId>org.apache.dubbo</groupId>
+ <version>${revision}</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>dubbo-dependencies-all</artifactId>
+ <description>Aggregate jacoco report</description>
+
+ <properties>
+ <skip_maven_deploy>true</skip_maven_deploy>
+ </properties>
+
+ <dependencies>
+ <!-- cluster -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-cluster</artifactId>
+ </dependency>
+
+ <!-- common -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-common</artifactId>
+ </dependency>
+
+ <!-- compatible -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-compatible</artifactId>
+ </dependency>
+
+ <!-- compiler -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-compiler</artifactId>
+ </dependency>
+
+ <!-- config -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-config-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-config-spring</artifactId>
+ </dependency>
+
+ <!-- config-center -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-configcenter-zookeeper</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-configcenter-apollo</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-configcenter-nacos</artifactId>
+ </dependency>
+
+ <!-- container -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-container-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-container-spring</artifactId>
+ </dependency>
+
+ <!-- distribution -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo</artifactId>
+ </dependency>
+
+ <!-- filter -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-filter-cache</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-filter-validation</artifactId>
+ </dependency>
+
+ <!-- kubernetes -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-kubernetes</artifactId>
+ </dependency>
+
+ <!-- metadata -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metadata-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metadata-report-zookeeper</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metadata-report-nacos</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metadata-report-redis</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metadata-processor</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metadata-definition-protobuf</artifactId>
+ </dependency>
+
+ <!-- metrics -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metrics-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-metrics-prometheus</artifactId>
+ </dependency>
+
+ <!-- monitor -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-monitor-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-monitor-default</artifactId>
+ </dependency>
+
+ <!-- native -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-native</artifactId>
+ </dependency>
+
+ <!-- native-plugin -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-native-plugin</artifactId>
+ </dependency>
+
+ <!-- plugin -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-auth</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-qos</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-reactive</artifactId>
+ </dependency>
+
+ <!-- registry -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-registry-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-registry-multicast</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-registry-multiple</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-registry-nacos</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-registry-zookeeper</artifactId>
+ </dependency>
+
+ <!-- remoting -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-remoting-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-remoting-http</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-remoting-netty</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-remoting-netty4</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-remoting-zookeeper</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-remoting-zookeeper-curator5</artifactId>
+ </dependency>
+
+ <!-- rpc -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-rpc-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-rpc-dubbo</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-rpc-injvm</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-rpc-rest</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-rpc-grpc</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-rpc-triple</artifactId>
+ </dependency>
+
+ <!-- serialization -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-serialization-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-serialization-hessian2</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-serialization-fastjson2</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-serialization-jdk</artifactId>
+ </dependency>
+
+ <!-- spring-boot -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-spring-boot-actuator</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-spring-boot-autoconfigure</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-spring-boot-actuator-compatible</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-spring-boot-autoconfigure-compatible</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-spring-boot-starter</artifactId>
+ </dependency>
+
+ <!-- test -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-test-check</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-test-common</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-test-modules</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-test-spring</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-test-spring3.2</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-test-spring4.1</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-test-spring4.2</artifactId>
+ </dependency>
+
+ <!-- xds -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-xds</artifactId>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/dubbo-test/pom.xml b/dubbo-test/dubbo-test-modules/pom.xml
similarity index 58%
copy from dubbo-test/pom.xml
copy to dubbo-test/dubbo-test-modules/pom.xml
index ee20080694..a8f8fd600e 100644
--- a/dubbo-test/pom.xml
+++ b/dubbo-test/dubbo-test-modules/pom.xml
@@ -1,3 +1,4 @@
+<?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
@@ -18,40 +19,31 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
+ <artifactId>dubbo-test</artifactId>
<groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-parent</artifactId>
<version>${revision}</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>dubbo-test</artifactId>
- <packaging>pom</packaging>
- <modules>
- <module>dubbo-test-check</module>
- <module>dubbo-test-common</module>
- <module>dubbo-test-spring</module>
- <module>dubbo-test-spring3.2</module>
- <module>dubbo-test-spring4.1</module>
- <module>dubbo-test-spring4.2</module>
- </modules>
+ <artifactId>dubbo-test-modules</artifactId>
+ <description>Check if dependencies configured properly</description>
<properties>
- <maven.compiler.source>8</maven.compiler.source>
- <maven.compiler.target>8</maven.compiler.target>
<skip_maven_deploy>true</skip_maven_deploy>
+ <dom4j_version>2.1.3</dom4j_version>
</properties>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-bom</artifactId>
- <version>${project.parent.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
+ <dependencies>
+ <dependency>
+ <groupId>org.dom4j</groupId>
+ <artifactId>dom4j</artifactId>
+ <version>${dom4j_version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-common</artifactId>
+ </dependency>
+ </dependencies>
</project>
diff --git
a/dubbo-test/dubbo-test-modules/src/test/java/org/apache/dubbo/dependency/FileTest.java
b/dubbo-test/dubbo-test-modules/src/test/java/org/apache/dubbo/dependency/FileTest.java
new file mode 100644
index 0000000000..1973d98340
--- /dev/null
+++
b/dubbo-test/dubbo-test-modules/src/test/java/org/apache/dubbo/dependency/FileTest.java
@@ -0,0 +1,491 @@
+/*
+ * 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.dependency;
+
+import org.apache.commons.io.FileUtils;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+public class FileTest {
+ private final static List<Pattern> ignoredModules = new LinkedList<>();
+ private final static List<Pattern> ignoredModulesInDubboAll = new
LinkedList<>();
+
+ static {
+ ignoredModules.add(Pattern.compile("dubbo-apache-release"));
+ ignoredModules.add(Pattern.compile("dubbo-build-tools"));
+ ignoredModules.add(Pattern.compile("dubbo-dependencies-all"));
+ ignoredModules.add(Pattern.compile("dubbo-parent"));
+ ignoredModules.add(Pattern.compile("dubbo-core-spi"));
+ ignoredModules.add(Pattern.compile("dubbo-demo.*"));
+
+ ignoredModulesInDubboAll.add(Pattern.compile("dubbo"));
+ ignoredModulesInDubboAll.add(Pattern.compile("dubbo-bom"));
+ ignoredModulesInDubboAll.add(Pattern.compile("dubbo-compiler"));
+ ignoredModulesInDubboAll.add(Pattern.compile("dubbo-dependencies.*"));
+ ignoredModulesInDubboAll.add(Pattern.compile("dubbo-distribution"));
+
ignoredModulesInDubboAll.add(Pattern.compile("dubbo-metadata-processor"));
+ ignoredModulesInDubboAll.add(Pattern.compile("dubbo-native.*"));
+ ignoredModulesInDubboAll.add(Pattern.compile("dubbo-spring-boot.*"));
+ }
+
+ @Test
+ public void checkDubboBom() throws DocumentException {
+ File baseFile = getBaseFile();
+
+ List<File> poms = new LinkedList<>();
+ readPoms(baseFile, poms);
+
+ SAXReader reader = new SAXReader();
+
+ List<String> artifactIds = poms.stream()
+ .map(f -> {
+ try {
+ return reader.read(f);
+ } catch (DocumentException e) {
+ throw new RuntimeException(e);
+ }
+ })
+ .map(Document::getRootElement)
+ .map(doc -> doc.elementText("artifactId"))
+ .sorted()
+ .collect(Collectors.toList());
+
+ String dubboBomPath = "dubbo-distribution/dubbo-bom/pom.xml";
+ Document dubboBom = reader.read(new File(getBaseFile(), dubboBomPath));
+ List<String> artifactIdsInDubboBom = dubboBom.getRootElement()
+ .element("dependencyManagement")
+ .element("dependencies")
+ .elements("dependency")
+ .stream()
+ .map(ele -> ele.elementText("artifactId"))
+ .collect(Collectors.toList());
+
+ List<String> expectedArtifactIds = new LinkedList<>(artifactIds);
+ expectedArtifactIds.removeAll(artifactIdsInDubboBom);
+ expectedArtifactIds.removeIf(artifactId ->
ignoredModules.stream().anyMatch(pattern ->
pattern.matcher(artifactId).matches()));
+
+ Assertions.assertTrue(expectedArtifactIds.isEmpty(), "Newly created
modules must be added to dubbo-bom. Found modules: " + expectedArtifactIds);
+ }
+
+ @Test
+ public void checkDubboDependenciesAll() throws DocumentException {
+ File baseFile = getBaseFile();
+
+ List<File> poms = new LinkedList<>();
+ readPoms(baseFile, poms);
+
+ SAXReader reader = new SAXReader();
+
+ List<String> artifactIds = poms.stream()
+ .map(f -> {
+ try {
+ return reader.read(f);
+ } catch (DocumentException e) {
+ throw new RuntimeException(e);
+ }
+ })
+ .map(Document::getRootElement)
+ .filter(doc -> !Objects.equals("pom",
doc.elementText("packaging")))
+ .map(doc -> doc.elementText("artifactId"))
+ .sorted()
+ .collect(Collectors.toList());
+
+ String dubboDependenciesAllPath =
"dubbo-test/dubbo-dependencies-all/pom.xml";
+ Document dubboDependenciesAll = reader.read(new File(getBaseFile(),
dubboDependenciesAllPath));
+ List<String> artifactIdsInDubboDependenciesAll =
dubboDependenciesAll.getRootElement()
+ .element("dependencies")
+ .elements("dependency")
+ .stream()
+ .map(ele -> ele.elementText("artifactId"))
+ .collect(Collectors.toList());
+
+ List<String> expectedArtifactIds = new LinkedList<>(artifactIds);
+ expectedArtifactIds.removeAll(artifactIdsInDubboDependenciesAll);
+ expectedArtifactIds.removeIf(artifactId ->
ignoredModules.stream().anyMatch(pattern ->
pattern.matcher(artifactId).matches()));
+
+ Assertions.assertTrue(expectedArtifactIds.isEmpty(), "Newly created
modules must be added to dubbo-dependencies-all. Found modules: " +
expectedArtifactIds);
+ }
+
+ @Test
+ public void checkDubboAllDependencies() throws DocumentException {
+ File baseFile = getBaseFile();
+
+ List<File> poms = new LinkedList<>();
+ readPoms(baseFile, poms);
+
+ SAXReader reader = new SAXReader();
+
+ List<String> artifactIds = poms.stream()
+ .map(f -> {
+ try {
+ return reader.read(f);
+ } catch (DocumentException e) {
+ throw new RuntimeException(e);
+ }
+ })
+ .map(Document::getRootElement)
+ .map(doc -> doc.elementText("artifactId"))
+ .sorted()
+ .collect(Collectors.toList());
+
+ Assertions.assertEquals(poms.size(), artifactIds.size());
+
+ List<String> deployedArtifactIds = poms.stream()
+ .map(f -> {
+ try {
+ return reader.read(f);
+ } catch (DocumentException e) {
+ throw new RuntimeException(e);
+ }
+ })
+ .map(Document::getRootElement)
+ .filter(doc -> !Objects.equals("pom",
doc.elementText("packaging")))
+ .filter(doc -> Objects.isNull(doc.element("properties")) ||
+ (!Objects.equals("true",
doc.element("properties").elementText("skip_maven_deploy")) &&
+ !Objects.equals("true",
doc.element("properties").elementText("maven.deploy.skip"))))
+ .map(doc -> doc.elementText("artifactId"))
+ .sorted()
+ .collect(Collectors.toList());
+
+ String dubboAllPath = "dubbo-distribution/dubbo-all/pom.xml";
+ Document dubboAll = reader.read(new File(getBaseFile(), dubboAllPath));
+ List<String> artifactIdsInDubboAll = dubboAll.getRootElement()
+ .element("dependencies")
+ .elements("dependency")
+ .stream()
+ .map(ele -> ele.elementText("artifactId"))
+ .collect(Collectors.toList());
+
+ List<String> expectedArtifactIds = new
LinkedList<>(deployedArtifactIds);
+ expectedArtifactIds.removeAll(artifactIdsInDubboAll);
+ expectedArtifactIds.removeIf(artifactId ->
ignoredModules.stream().anyMatch(pattern ->
pattern.matcher(artifactId).matches()));
+ expectedArtifactIds.removeIf(artifactId ->
ignoredModulesInDubboAll.stream().anyMatch(pattern ->
pattern.matcher(artifactId).matches()));
+
+ Assertions.assertTrue(expectedArtifactIds.isEmpty(), "Newly created
modules must be added to dubbo-all(dubbo-distribution/dubbo-all/pom.xml). Found
modules: " + expectedArtifactIds);
+
+ List<String> unexpectedArtifactIds = new
LinkedList<>(artifactIdsInDubboAll);
+ unexpectedArtifactIds.removeIf(artifactId ->
!artifactIds.contains(artifactId));
+ unexpectedArtifactIds.removeAll(deployedArtifactIds);
+ Assertions.assertTrue(unexpectedArtifactIds.isEmpty(), "Undeploy
dependencies should not be added to
dubbo-all(dubbo-distribution/dubbo-all/pom.xml). Found modules: " +
unexpectedArtifactIds);
+
+ unexpectedArtifactIds = new LinkedList<>();
+ for (String artifactId : artifactIdsInDubboAll) {
+ if (!artifactIds.contains(artifactId)) {
+ continue;
+ }
+ if (ignoredModules.stream().anyMatch(pattern ->
pattern.matcher(artifactId).matches())) {
+ unexpectedArtifactIds.add(artifactId);
+ }
+ if (ignoredModulesInDubboAll.stream().anyMatch(pattern ->
pattern.matcher(artifactId).matches())) {
+ unexpectedArtifactIds.add(artifactId);
+ }
+ }
+ Assertions.assertTrue(unexpectedArtifactIds.isEmpty(), "Unexpected
dependencies should not be added to
dubbo-all(dubbo-distribution/dubbo-all/pom.xml). Found modules: " +
unexpectedArtifactIds);
+ }
+
+ @Test
+ public void checkDubboAllShade() throws DocumentException {
+ File baseFile = getBaseFile();
+
+ List<File> poms = new LinkedList<>();
+ readPoms(baseFile, poms);
+
+ SAXReader reader = new SAXReader();
+
+ List<String> artifactIds = poms.stream()
+ .map(f -> {
+ try {
+ return reader.read(f);
+ } catch (DocumentException e) {
+ throw new RuntimeException(e);
+ }
+ })
+ .map(Document::getRootElement)
+ .map(doc -> doc.elementText("artifactId"))
+ .sorted()
+ .collect(Collectors.toList());
+
+ Assertions.assertEquals(poms.size(), artifactIds.size());
+
+ List<String> deployedArtifactIds = poms.stream()
+ .map(f -> {
+ try {
+ return reader.read(f);
+ } catch (DocumentException e) {
+ throw new RuntimeException(e);
+ }
+ })
+ .map(Document::getRootElement)
+ .filter(doc -> Objects.isNull(doc.element("properties")) ||
+ (!Objects.equals("true",
doc.element("properties").elementText("skip_maven_deploy")) &&
+ !Objects.equals("true",
doc.element("properties").elementText("maven.deploy.skip"))))
+ .filter(doc -> !Objects.equals("pom",
doc.elementText("packaging")))
+ .map(doc -> doc.elementText("artifactId"))
+ .sorted()
+ .collect(Collectors.toList());
+
+ String dubboAllPath = "dubbo-distribution/dubbo-all/pom.xml";
+ Document dubboAll = reader.read(new File(getBaseFile(), dubboAllPath));
+ List<String> artifactIdsInDubboAll = dubboAll.getRootElement()
+ .element("build")
+ .element("plugins")
+ .elements("plugin")
+ .stream()
+ .filter(ele ->
ele.elementText("artifactId").equals("maven-shade-plugin"))
+ .map(ele -> ele.element("executions"))
+ .map(ele -> ele.elements("execution"))
+ .flatMap(Collection::stream)
+ .filter(ele -> ele.elementText("phase").equals("package"))
+ .map(ele -> ele.element("configuration"))
+ .map(ele -> ele.element("artifactSet"))
+ .map(ele -> ele.element("includes"))
+ .map(ele -> ele.elements("include"))
+ .flatMap(Collection::stream)
+ .map(Element::getText)
+ .filter(artifactId -> artifactId.startsWith("org.apache.dubbo:"))
+ .map(artifactId ->
artifactId.substring("org.apache.dubbo:".length()))
+ .collect(Collectors.toList());
+
+ List<String> expectedArtifactIds = new
LinkedList<>(deployedArtifactIds);
+ expectedArtifactIds.removeAll(artifactIdsInDubboAll);
+ expectedArtifactIds.removeIf(artifactId ->
ignoredModules.stream().anyMatch(pattern ->
pattern.matcher(artifactId).matches()));
+ expectedArtifactIds.removeIf(artifactId ->
ignoredModulesInDubboAll.stream().anyMatch(pattern ->
pattern.matcher(artifactId).matches()));
+
+ Assertions.assertTrue(expectedArtifactIds.isEmpty(), "Newly created
modules must be added to dubbo-all (dubbo-distribution/dubbo-all/pom.xml in
shade plugin). Found modules: " + expectedArtifactIds);
+
+ List<String> unexpectedArtifactIds = new
LinkedList<>(artifactIdsInDubboAll);
+ unexpectedArtifactIds.removeIf(artifactId ->
!artifactIds.contains(artifactId));
+ unexpectedArtifactIds.removeAll(deployedArtifactIds);
+ Assertions.assertTrue(unexpectedArtifactIds.isEmpty(), "Undeploy
dependencies should not be added to dubbo-all
(dubbo-distribution/dubbo-all/pom.xml in shade plugin). Found modules: " +
unexpectedArtifactIds);
+
+ unexpectedArtifactIds = new LinkedList<>();
+ for (String artifactId : artifactIdsInDubboAll) {
+ if (!artifactIds.contains(artifactId)) {
+ continue;
+ }
+ if (ignoredModules.stream().anyMatch(pattern ->
pattern.matcher(artifactId).matches())) {
+ unexpectedArtifactIds.add(artifactId);
+ }
+ if (ignoredModulesInDubboAll.stream().anyMatch(pattern ->
pattern.matcher(artifactId).matches())) {
+ unexpectedArtifactIds.add(artifactId);
+ }
+ }
+ Assertions.assertTrue(unexpectedArtifactIds.isEmpty(), "Unexpected
dependencies should not be added to dubbo-all
(dubbo-distribution/dubbo-all/pom.xml in shade plugin). Found modules: " +
unexpectedArtifactIds);
+ }
+
+ @Test
+ public void checkDubboAllTransform() throws DocumentException {
+ File baseFile = getBaseFile();
+ List<String> spis = new LinkedList<>();
+ readSPI(baseFile, spis);
+
+ String dubboAllPath = "dubbo-distribution/dubbo-all/pom.xml";
+
+ SAXReader reader = new SAXReader();
+ Document dubboAll = reader.read(new File(baseFile, dubboAllPath));
+
+ List<String> transformsInDubboAll = dubboAll.getRootElement()
+ .element("build")
+ .element("plugins")
+ .elements("plugin")
+ .stream()
+ .filter(ele ->
ele.elementText("artifactId").equals("maven-shade-plugin"))
+ .map(ele -> ele.element("executions"))
+ .map(ele -> ele.elements("execution"))
+ .flatMap(Collection::stream)
+ .filter(ele -> ele.elementText("phase").equals("package"))
+ .map(ele -> ele.element("configuration"))
+ .map(ele -> ele.element("transformers"))
+ .map(ele -> ele.elements("transformer"))
+ .flatMap(Collection::stream)
+ .map(ele -> ele.elementText("resource"))
+ .map(String::trim)
+ .map(resource -> resource.substring(resource.lastIndexOf("/") + 1))
+ .collect(Collectors.toList());
+
+ List<String> expectedSpis = new LinkedList<>(spis);
+ expectedSpis.removeAll(transformsInDubboAll);
+ Assertions.assertTrue(expectedSpis.isEmpty(), "Newly created SPI
interface must be added to dubbo-all(dubbo-distribution/dubbo-all/pom.xml in
shade plugin) to being transformed. Found spis: " + expectedSpis);
+
+ List<String> unexpectedSpis = new LinkedList<>(transformsInDubboAll);
+ unexpectedSpis.removeAll(spis);
+ Assertions.assertTrue(unexpectedSpis.isEmpty(), "Class without `@SPI`
declaration should not be added to
dubbo-all(dubbo-distribution/dubbo-all/pom.xml in shade plugin) to being
transformed. Found spis: " + unexpectedSpis);
+ }
+
+ @Test
+ public void checkSpiFiles() {
+ File baseFile = getBaseFile();
+ List<String> spis = new LinkedList<>();
+ readSPI(baseFile, spis);
+
+ Map<File, String> spiResources = new HashMap<>();
+ readSPIResource(baseFile, spiResources);
+ Map<File, String> copyOfSpis = new HashMap<>(spiResources);
+ copyOfSpis.entrySet().removeIf(entry ->
spis.contains(entry.getValue()));
+ Assertions.assertTrue(copyOfSpis.isEmpty(), "Newly created spi
profiles must have a valid class declared with `@SPI`. Found spi profiles: " +
copyOfSpis.keySet());
+
+ List<File> unexpectedSpis = new LinkedList<>();
+ readSPIUnexpectedResource(baseFile, unexpectedSpis);
+ unexpectedSpis.removeIf(file ->
file.getAbsolutePath().contains("dubbo-common/src/main/resources/META-INF/services/org.apache.dubbo.common.extension.LoadingStrategy"));
+ Assertions.assertTrue(unexpectedSpis.isEmpty(), "Dubbo native provided
spi profiles must filed in `META-INF/dubbo/internal`. Please move to proper
folder . Found spis: " + unexpectedSpis);
+ }
+
+ private static File getBaseFile() {
+ File baseFile = new File(new File("").getAbsolutePath());
+ while (baseFile != null) {
+ if (new File(baseFile, ".asf.yaml").exists()) {
+ break;
+ }
+ baseFile = baseFile.getParentFile();
+ }
+ Assertions.assertNotNull(baseFile, "Can not find base dir");
+
+ System.out.println("Found Project Base Path: " +
baseFile.getAbsolutePath());
+ return baseFile;
+ }
+
+ public void readPoms(File path, List<File> poms) {
+ if (path.isDirectory()) {
+ File[] files = path.listFiles();
+ if (files != null) {
+ for (File file : files) {
+ readPoms(file, poms);
+ }
+ }
+ } else if (path.isFile()) {
+ if (path.getAbsolutePath().contains("target")) {
+ return;
+ }
+ if (path.getName().equals("pom.xml")) {
+ poms.add(path);
+ }
+ }
+ }
+
+ public void readSPI(File path, List<String> spis) {
+ if (path.isDirectory()) {
+ File[] files = path.listFiles();
+ if (files != null) {
+ for (File file : files) {
+ readSPI(file, spis);
+ }
+ }
+ } else if (path.isFile()) {
+ if (path.getAbsolutePath().contains("target")) {
+ return;
+ }
+ if (path.getAbsolutePath().contains("src/main/java")) {
+ String content;
+ try {
+ content = FileUtils.readFileToString(path,
StandardCharsets.UTF_8);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ if (content != null && content.contains("@SPI")) {
+ String absolutePath = path.getAbsolutePath();
+ absolutePath =
absolutePath.substring(absolutePath.lastIndexOf("src/main/java/") +
"src/main/java/".length());
+ absolutePath = absolutePath.substring(0,
absolutePath.lastIndexOf(".java"));
+ absolutePath = absolutePath.replaceAll("/", ".");
+ spis.add(absolutePath);
+ }
+ }
+ }
+ }
+
+ public void readSPIResource(File path, Map<File, String> spis) {
+ if (path.isDirectory()) {
+ File[] files = path.listFiles();
+ if (files != null) {
+ for (File file : files) {
+ readSPIResource(file, spis);
+ }
+ }
+ } else if (path.isFile()) {
+ if (path.getAbsolutePath().contains("target")) {
+ return;
+ }
+ if
(path.getAbsolutePath().contains("src/main/resources/META-INF/dubbo/internal/"))
{
+ String absolutePath = path.getAbsolutePath();
+ absolutePath =
absolutePath.substring(absolutePath.lastIndexOf("src/main/resources/META-INF/dubbo/internal/")
+ "src/main/resources/META-INF/dubbo/internal/".length());
+ absolutePath = absolutePath.replaceAll("/", ".");
+ spis.put(path, absolutePath);
+ }
+ }
+ }
+
+ public void readSPIUnexpectedResource(File path, List<File> spis) {
+ if (path.isDirectory()) {
+ File[] files = path.listFiles();
+ if (files != null) {
+ for (File file : files) {
+ readSPIUnexpectedResource(file, spis);
+ }
+ }
+ } else if (path.isFile()) {
+ if (path.getAbsolutePath().contains("target")) {
+ return;
+ }
+ if
(path.getAbsolutePath().contains("src/main/resources/META-INF/dubbo/org.apache.dubbo"))
{
+ spis.add(path);
+ }
+ if
(path.getAbsolutePath().contains("src/main/resources/META-INF/dubbo/com.alibaba.dubbo"))
{
+ spis.add(path);
+ }
+ if
(path.getAbsolutePath().contains("src/main/resources/META-INF/services/org.apache.dubbo"))
{
+ spis.add(path);
+ }
+ if
(path.getAbsolutePath().contains("src/main/resources/META-INF/services/com.alibaba.dubbo"))
{
+ spis.add(path);
+ }
+
+ if
(path.getAbsolutePath().contains("src/main/resources/META-INF.dubbo/org.apache.dubbo"))
{
+ spis.add(path);
+ }
+ if
(path.getAbsolutePath().contains("src/main/resources/META-INF.dubbo/com.alibaba.dubbo"))
{
+ spis.add(path);
+ }
+ if
(path.getAbsolutePath().contains("src/main/resources/META-INF.services/org.apache.dubbo"))
{
+ spis.add(path);
+ }
+ if
(path.getAbsolutePath().contains("src/main/resources/META-INF.services/com.alibaba.dubbo"))
{
+ spis.add(path);
+ }
+ if
(path.getAbsolutePath().contains("src/main/resources/META-INF.dubbo.internal/org.apache.dubbo"))
{
+ spis.add(path);
+ }
+ if
(path.getAbsolutePath().contains("src/main/resources/META-INF.dubbo.internal/com.alibaba.dubbo"))
{
+ spis.add(path);
+ }
+ }
+ }
+}
diff --git a/dubbo-test/pom.xml b/dubbo-test/pom.xml
index ee20080694..5d5a256394 100644
--- a/dubbo-test/pom.xml
+++ b/dubbo-test/pom.xml
@@ -34,6 +34,8 @@
<module>dubbo-test-spring3.2</module>
<module>dubbo-test-spring4.1</module>
<module>dubbo-test-spring4.2</module>
+ <module>dubbo-dependencies-all</module>
+ <module>dubbo-test-modules</module>
</modules>
<properties>
diff --git
a/dubbo-xds/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery
b/dubbo-xds/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery
deleted file mode 100644
index daf1bb1d13..0000000000
---
a/dubbo-xds/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery
+++ /dev/null
@@ -1 +0,0 @@
-xds=org.apache.dubbo.registry.xds.XdsServiceDiscovery
diff --git a/pom.xml b/pom.xml
index c8459669b7..7123f6053f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -599,8 +599,16 @@
<id>report-aggregate</id>
<phase>verify</phase>
<goals>
+ <goal>report</goal>
<goal>report-aggregate</goal>
</goals>
+ <configuration>
+ <includes>
+ <include>target/classes/**/*</include>
+ <include>target/classes/**</include>
+ <include>**/*</include>
+ </includes>
+ </configuration>
</execution>
</executions>
</plugin>