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

liujun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/dubbo-initializer.git

commit 4ef049dd8ea59b6d3907e36cb2916bd5b14f666a
Author: chickenlj <[email protected]>
AuthorDate: Wed Apr 12 19:39:13 2023 +0800

    update
---
 ...alizerProjectRequestToDescriptionConverter.java |  34 +++-
 .../DubboMavenProjectGenerationConfiguration.java  |   4 +-
 .../build/maven/IdlMavenPluginCustomizer.java      |  20 +-
 .../dependency/ApiMavenDependenciesCustomizer.java |  44 -----
 ...boDependencyProjectGenerationConfiguration.java |  59 ------
 .../dependency/DubboGrpcBuildCustomizer.java       |  43 -----
 .../DubboGrpcDependenciesCustomizer.java           |  53 ------
 .../dependency/DubboGrpcPluginCustomizer.java      |  76 --------
 .../src/main/resources/META-INF/spring.factories   |   1 -
 .../src/main/resources/metadata.yaml               | 208 +++++++++------------
 .../resources/application.properties.mustache      |   9 +
 .../resources/application.properties.mustache      |   3 +
 .../resources/application.properties.mustache      |   9 +
 .../dubbo-idl/java/DemoServiceImpl.java.mustache   |  12 --
 .../codes/dubbo-idl/proto/Greet.proto.mustache     |  23 +++
 .../dubbo-idl/resources/log4j.properties.mustache  |  12 ++
 .../api/java/DemoService.java.mustache             |  10 -
 .../api/java/RequestData.java.mustache             |  26 ---
 .../api/java/ResponseData.java.mustache            |  26 ---
 .../java/DemoServiceImpl.java.mustache             |  15 --
 .../api/proto/DemoService.proto.mustache           |  22 ---
 .../java/DemoServiceImpl.java.mustache             |  19 --
 .../resources/application.properties.mustache      |   2 +-
 .../application.properties.mustache                |   4 +
 .../resources/application.properties.mustache      |   4 +
 .../resources/application.properties.mustache      |   2 +-
 .../resources/application.properties.mustache      |   3 -
 .../resources/application.properties.mustache      |   4 -
 .../resources/application.properties.mustache      |   3 -
 .../resources/application.properties.mustache      |   3 -
 .../resources/application.properties.mustache      |   9 -
 .../codes/dubbo/java/Consumer.java.mustache        |  21 +++
 .../codes/dubbo/java/DemoServiceImpl.java.mustache |   2 +-
 .../resources/application.properties.mustache      |   3 +
 .../dubbo/resources/log4j.properties.mustache      |  12 ++
 35 files changed, 231 insertions(+), 569 deletions(-)

diff --git 
a/initializer-generator/src/main/java/com/alibaba/initializer/controller/InitializerProjectRequestToDescriptionConverter.java
 
b/initializer-generator/src/main/java/com/alibaba/initializer/controller/InitializerProjectRequestToDescriptionConverter.java
index d1930c8..0ea93e4 100644
--- 
a/initializer-generator/src/main/java/com/alibaba/initializer/controller/InitializerProjectRequestToDescriptionConverter.java
+++ 
b/initializer-generator/src/main/java/com/alibaba/initializer/controller/InitializerProjectRequestToDescriptionConverter.java
@@ -224,18 +224,38 @@ public class 
InitializerProjectRequestToDescriptionConverter
     }
 
     private List<Dependency> 
getResolvedDependencies(io.spring.initializr.web.project.ProjectRequest 
request, String springBootVersion, InitializrMetadata metadata) {
+        List<String> depIds = getDependenciesWithDefaultComposition(request);
+        Version requestedVersion = Version.parse(springBootVersion);
+        return depIds.stream().map((it) -> {
+            Dependency dependency = metadata.getDependencies().get(it);
+            return dependency.resolve(requestedVersion);
+        }).collect(Collectors.toList());
+    }
+
+    private static List<String> 
getDependenciesWithDefaultComposition(io.spring.initializr.web.project.ProjectRequest
 request) {
         List<String> depIds = request.getDependencies();
         // If user click 'generate' button directly without adding any 
dependency.
         if (CollectionUtils.isEmpty(depIds)) {
             depIds = new ArrayList<>();
             depIds.add("dubbo");
-            depIds.add("dubbo-zookeeper");
-            depIds.add("dubbo-tcp");
+            depIds.add("dubbo-governance-zookeeper");
+            depIds.add("dubbo-protocol-tcp");
+        } else {
+            if (depIds.stream().noneMatch(v -> v.contains("-protocol-"))) {
+                if (depIds.stream().anyMatch(value -> 
value.equals("dubbo-idl"))) {
+                    depIds.add("dubbo-protocol-http2");
+                } else {
+                    depIds.add("dubbo-protocol-tcp");
+                    depIds.add("dubbo");
+                }
+            }
+            if (depIds.stream().noneMatch(v -> v.contains("-governance-"))) {
+                depIds.add("dubbo-governance-zookeeper");
+            }
+            if (depIds.stream().noneMatch(v -> v.equals("dubbo") || 
v.equals("dubbo-idl"))) {
+                depIds.add("dubbo");
+            }
         }
-        Version requestedVersion = Version.parse(springBootVersion);
-        return depIds.stream().map((it) -> {
-            Dependency dependency = metadata.getDependencies().get(it);
-            return dependency.resolve(requestedVersion);
-        }).collect(Collectors.toList());
+        return depIds;
     }
 }
diff --git 
a/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/build/maven/DubboMavenProjectGenerationConfiguration.java
 
b/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/build/maven/DubboMavenProjectGenerationConfiguration.java
index 887dac5..c4f01e9 100644
--- 
a/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/build/maven/DubboMavenProjectGenerationConfiguration.java
+++ 
b/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/build/maven/DubboMavenProjectGenerationConfiguration.java
@@ -53,8 +53,8 @@ public class DubboMavenProjectGenerationConfiguration {
     @Bean
     @ConditionalOnRequestedArchitecture("dubbo")
     @ConditionalOnRequestedModule({"root"})
-    public DefaultMavenDependenciesCustomizer 
defaultMavenDependenciesCustomizer() {
-        return new DefaultMavenDependenciesCustomizer();
+    public RootMavenDependenciesCustomizer 
defaultMavenDependenciesCustomizer() {
+        return new RootMavenDependenciesCustomizer();
     }
 
     @Bean
diff --git 
a/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/build/maven/IdlMavenPluginCustomizer.java
 
b/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/build/maven/IdlMavenPluginCustomizer.java
index c8dce73..31af20e 100644
--- 
a/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/build/maven/IdlMavenPluginCustomizer.java
+++ 
b/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/build/maven/IdlMavenPluginCustomizer.java
@@ -22,19 +22,29 @@ import 
io.spring.initializr.generator.spring.build.BuildCustomizer;
 public class IdlMavenPluginCustomizer implements BuildCustomizer<MavenBuild> {
     @Override
     public void customize(MavenBuild mavenBuild) {
+        mavenBuild.plugins().add("kr.motd.maven", "os-maven-plugin", builder 
-> {
+            builder.execution("os-maven-plugin", executionBuilder -> {
+                executionBuilder.phase("initialize");
+                executionBuilder.goal("detect");
+            });
+            builder.version("1.7.1");
+        });
+
         mavenBuild.plugins().add("org.xolstice.maven.plugins", 
"protobuf-maven-plugin", builder -> {
             builder.version("0.6.1")
                     .execution("protoc-compile", executionBuilder -> {
-                        
executionBuilder.goal("compile").goal("test-compile").goal("compile-custom").goal("test-compile-custom");
+                        executionBuilder.goal("compile").goal("test-compile"); 
date//.goal("compile-custom").goal("test-compile-custom");
                     })
                     .configuration(configurationBuilder -> {
-                        configurationBuilder.add("protocArtifact", 
"com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}");
-                        configurationBuilder.add("grpc-java", 
"io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}");
+                        configurationBuilder.add("protocArtifact", 
"com.google.protobuf:protoc:3.19.4:exe:${os.detected.classifier}");
+//                        configurationBuilder.add("pluginId", "grpc-java");
+//                        configurationBuilder.add("pluginArtifact", 
"io.grpc:protoc-gen-grpc-java:1.44.1:exe:${os.detected.classifier}");
                         configurationBuilder.add("protocPlugins", 
protocPluginsBuilder -> {
                             protocPluginsBuilder.add("protocPlugin", 
protocPluginBuilder -> {
                                 protocPluginBuilder.add("id", "dubbo");
-                                protocPluginBuilder.add("groupId", 
"dubbo-compiler");
-                                protocPluginBuilder.add("artifactId", 
"${dubbo.version}");
+                                protocPluginBuilder.add("groupId", 
"org.apache.dubbo");
+                                protocPluginBuilder.add("artifactId", 
"dubbo-compiler");
+                                protocPluginBuilder.add("version", 
"${dubbo.version}");
                                 protocPluginBuilder.add("mainClass", 
"org.apache.dubbo.gen.tri.Dubbo3TripleGenerator");
                             });
                         });
diff --git 
a/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/dependency/ApiMavenDependenciesCustomizer.java
 
b/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/dependency/ApiMavenDependenciesCustomizer.java
deleted file mode 100644
index f94fa68..0000000
--- 
a/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/dependency/ApiMavenDependenciesCustomizer.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2022 the original author or authors.
- *
- * Licensed 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
- *
- *      https://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.initializer.generation.extension.dependency;
-
-import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
-import io.spring.initializr.generator.spring.build.BuildCustomizer;
-
-/**
- * after DefaultStarterBuildCustomizer,DependencyManagementBuildCustomizer
- * <pre>
- * 1.Remove starter dependencies from  pom.xml
- * 2.Remove other dependencies from  pom.xml
- * </pre>
- *
- * @author Weix Sun
- * @see 
io.spring.initializr.generator.spring.build.DefaultStarterBuildCustomizer,io.spring.initializr.generator.spring.build.DependencyManagementBuildCustomizer
- */
-public class ApiMavenDependenciesCustomizer implements 
BuildCustomizer<MavenBuild> {
-
-    @Override
-    public void customize(MavenBuild build) {
-        // Remove all dependencies, after the 'dependencies.bom' analysis is 
completed
-        build.dependencies().ids().toList().forEach(id -> 
build.dependencies().remove(id));
-    }
-
-    @Override
-    public int getOrder() {
-        return LOWEST_PRECEDENCE;
-    }
-}
diff --git 
a/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/dependency/DubboDependencyProjectGenerationConfiguration.java
 
b/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/dependency/DubboDependencyProjectGenerationConfiguration.java
deleted file mode 100644
index 2d7a662..0000000
--- 
a/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/dependency/DubboDependencyProjectGenerationConfiguration.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright 2012-2022 the original author or authors.
- *
- * Licensed 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
- *
- *      https://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.initializer.generation.extension.dependency;
-
-import 
com.alibaba.initializer.generation.condition.ConditionalOnRequestedArchitecture;
-import 
io.spring.initializr.generator.condition.ConditionalOnRequestedDependency;
-import io.spring.initializr.generator.project.ProjectGenerationConfiguration;
-import 
org.apache.dubbo.initializer.generation.condition.ConditionalOnRequestedModule;
-import org.springframework.context.annotation.Bean;
-
-/**
- * @author <a href="mailto:[email protected]";>ErDan Wang</a>
- */
-@ProjectGenerationConfiguration
-@ConditionalOnRequestedArchitecture("dubbo")
-class DubboDependencyProjectGenerationConfiguration {
-
-       @Bean
-       @ConditionalOnRequestedDependency("dubbo-protocol-grpc")
-       public DubboGrpcBuildCustomizer dubboGrpcBuildCustomizer() {
-               return new DubboGrpcBuildCustomizer();
-       }
-
-       @Bean
-       @ConditionalOnRequestedDependency("dubbo-protocol-grpc")
-       @ConditionalOnRequestedModule("api")
-       public DubboGrpcPluginCustomizer dubboGrpcPluginCustomizer() {
-               return new DubboGrpcPluginCustomizer();
-       }
-
-       @Bean
-       @ConditionalOnRequestedDependency("dubbo-protocol-grpc")
-       public DubboGrpcDependenciesCustomizer 
dubboGrpcDependenciesCustomizer() {
-               return new DubboGrpcDependenciesCustomizer();
-       }
-
-//     @Bean
-//     @ConditionalOnRequestedDependency("dubbo-protocol-default")
-//     @ConditionalOnRequestedModule("api")
-//     public ApiMavenDependenciesCustomizer 
defaultMavenDependenciesCustomizer() {
-//             return new ApiMavenDependenciesCustomizer();
-//     }
-
-
-}
diff --git 
a/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/dependency/DubboGrpcBuildCustomizer.java
 
b/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/dependency/DubboGrpcBuildCustomizer.java
deleted file mode 100644
index 827bc18..0000000
--- 
a/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/dependency/DubboGrpcBuildCustomizer.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2022 the original author or authors.
- *
- * Licensed 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
- *
- *      https://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.initializer.generation.extension.dependency;
-
-import io.spring.initializr.generator.buildsystem.Dependency;
-import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
-import io.spring.initializr.generator.spring.build.BuildCustomizer;
-
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * 1.Add grpc-netty dependency exclude
- *
- * @author <a href="mailto:[email protected]";>ErDan Wang</a>
- */
-public class DubboGrpcBuildCustomizer implements BuildCustomizer<MavenBuild> {
-
-
-    @Override
-    public void customize(MavenBuild build) {
-        //1.Add grpc-netty dependency exclude
-        Set<Dependency.Exclusion> exclusions = new HashSet<>();
-        exclusions.add(new Dependency.Exclusion("io.netty", 
"netty-codec-http2"));
-        exclusions.add(new Dependency.Exclusion("io.netty", 
"netty-handler-proxy"));
-        build.dependencies().add("grpc-netty", 
Dependency.withCoordinates("io.grpc", "grpc-netty").exclusions(exclusions));
-    }
-
-}
diff --git 
a/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/dependency/DubboGrpcDependenciesCustomizer.java
 
b/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/dependency/DubboGrpcDependenciesCustomizer.java
deleted file mode 100644
index c27bf7c..0000000
--- 
a/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/dependency/DubboGrpcDependenciesCustomizer.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2022 the original author or authors.
- *
- * Licensed 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
- *
- *      https://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.initializer.generation.extension.dependency;
-
-import com.alibaba.initializer.metadata.Module;
-import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
-import io.spring.initializr.generator.spring.build.BuildCustomizer;
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
- * 1.Apart from GRPC dependencies, remove other dependencies of the API
- * 2.GRPC dependency removal for serivce
- *
- * @author <a href="mailto:[email protected]";>ErDan Wang</a>
- * after  DependencyManagementBuildCustomizer
- * @see 
io.spring.initializr.generator.spring.build.DependencyManagementBuildCustomizer
- */
-public class DubboGrpcDependenciesCustomizer implements 
BuildCustomizer<MavenBuild> {
-
-
-    @Autowired
-    private Module module;
-
-    @Override
-    public void customize(MavenBuild build) {
-        // 1.Apart from GRPC dependencies, remove other dependencies of the API
-        // 2.GRPC dependency removal for serivce
-        build.dependencies().ids().toList().forEach(id -> {
-            boolean has = (id.equalsIgnoreCase("grpc-netty-shaded") || 
id.equalsIgnoreCase("grpc-protobuf") || id.equalsIgnoreCase("grpc-stub") || 
id.equalsIgnoreCase("grpc-netty") || id.equalsIgnoreCase("dubbo-common"));
-            if ((module.isMain() && has) || (!module.isMain() && !has))
-                build.dependencies().remove(id);
-        });
-    }
-
-    @Override
-    public int getOrder() {
-        return LOWEST_PRECEDENCE;
-    }
-}
diff --git 
a/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/dependency/DubboGrpcPluginCustomizer.java
 
b/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/dependency/DubboGrpcPluginCustomizer.java
deleted file mode 100644
index 1d1019d..0000000
--- 
a/initializer-generator/src/main/java/org/apache/dubbo/initializer/generation/extension/dependency/DubboGrpcPluginCustomizer.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright 2022 the original author or authors.
- *
- * Licensed 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
- *
- *      https://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.initializer.generation.extension.dependency;
-
-import com.alibaba.initializer.metadata.Module;
-import io.spring.initializr.generator.buildsystem.Dependency;
-import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
-import io.spring.initializr.generator.spring.build.BuildCustomizer;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * 1.Add protobuf Plugin for the API module   after  ApiMavenPluginCustomizer
- *
- * @author <a href="mailto:[email protected]";>ErDan Wang</a>
- */
-public class DubboGrpcPluginCustomizer implements BuildCustomizer<MavenBuild> {
-
-    @Autowired
-    private Module module;
-
-    @Override
-    public void customize(MavenBuild build) {
-        build.plugins().add("kr.motd.maven", "os-maven-plugin", builder -> {
-            builder.execution("os-maven-plugin", executionBuilder -> {
-                executionBuilder.phase("initialize");
-                executionBuilder.goal("detect");
-            });
-            builder.version("1.7.1");
-        });
-        build.plugins().add("org.xolstice.maven.plugins", 
"protobuf-maven-plugin",
-                builder -> {
-                    builder.configuration(configuration -> {
-                                configuration.add("protocArtifact", 
"com.google.protobuf:protoc:3.7.1:exe:${os.detected.classifier}");
-                                configuration.add("pluginId", "grpc-java");
-                                configuration.add("pluginArtifact", 
"io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}");
-                                configuration.add("protocPlugins", 
nestedConfiguration -> nestedConfiguration.add("protocPlugin", 
nestedConfiguration1 -> {
-                                    nestedConfiguration1.add("id", 
"dubbo-grpc");
-                                    nestedConfiguration1.add("groupId", 
"org.apache.dubbo");
-                                    nestedConfiguration1.add("artifactId", 
"dubbo-compiler");
-                                    nestedConfiguration1.add("version", 
"0.0.1");
-                                    nestedConfiguration1.add("mainClass", 
"org.apache.dubbo.gen.grpc.DubboGrpcGenerator");
-                                }));
-                            }
-
-                    );
-                    builder.execution("protobuf-maven-plugin", 
executionBuilder -> {
-                        executionBuilder.goal("compile");
-                        executionBuilder.goal("compile-custom");
-                    });
-                    builder.version("0.6.1");
-                }
-        );
-    }
-
-    @Override
-    public int getOrder() {
-        return 4;
-    }
-}
diff --git a/initializer-generator/src/main/resources/META-INF/spring.factories 
b/initializer-generator/src/main/resources/META-INF/spring.factories
index 48df3bf..0c570a9 100644
--- a/initializer-generator/src/main/resources/META-INF/spring.factories
+++ b/initializer-generator/src/main/resources/META-INF/spring.factories
@@ -8,7 +8,6 @@ 
io.spring.start.site.extension.build.gradle.GradleProjectGenerationConfiguration
 
org.apache.dubbo.initializer.generation.extension.build.maven.DubboMavenProjectGenerationConfiguration,\
 
org.apache.dubbo.initializer.generation.extension.codes.DubboSourceCodeProjectGenerationConfiguration,\
 
org.apache.dubbo.initializer.generation.extension.codes.language.DubboJavaProjectGenerationConfiguration,\
-org.apache.dubbo.initializer.generation.extension.dependency.DubboDependencyProjectGenerationConfiguration,\
 
com.alibaba.initializer.generation.extension.build.maven.ArchedMavenProjectGenerationConfiguration,\
 
io.spring.start.site.extension.build.maven.MavenProjectGenerationConfiguration,\
 
com.alibaba.initializer.generation.extension.architecture.ArchitectureProjectGenerationConfiguration,\
diff --git a/initializer-generator/src/main/resources/metadata.yaml 
b/initializer-generator/src/main/resources/metadata.yaml
index ff61098..355340e 100644
--- a/initializer-generator/src/main/resources/metadata.yaml
+++ b/initializer-generator/src/main/resources/metadata.yaml
@@ -24,15 +24,67 @@ initializr:
         mappings:
           - compatibilityRange: "2.3.0.M1"
             version: 3.1.8
-      io-grpc:
-        groupId: io.grpc
-        artifactId: grpc-bom
-        versionProperty: grpc.version
-        additionalBoms: [ apache-dubbo ]
-        order: 2
+      spring-shell:
+        groupId: org.springframework.shell
+        artifactId: spring-shell-dependencies
+        versionProperty: spring-shell.version
         mappings:
-          - compatibilityRange: "2.3.0.M1"
-            version: 1.44.1
+          - compatibilityRange: "[2.7.0,3.0.0-M1)"
+            version: 2.1.3
+          - compatibilityRange: "[3.0.0-M1,3.1.0-M1)"
+            version: 3.0.0-M2
+            repositories: spring-milestones
+      testcontainers:
+        groupId: org.testcontainers
+        artifactId: testcontainers-bom
+        version: 1.17.6
+        versionProperty: testcontainers.version
+      vaadin:
+        groupId: com.vaadin
+        artifactId: vaadin-bom
+        versionProperty: vaadin.version
+        mappings:
+          - compatibilityRange: "[2.1.0.RELEASE,2.6.0-M1)"
+            version: 14.9.2
+          - compatibilityRange: "[2.6.0-M1,2.8.0-M1)"
+            version: 23.2.10
+      wavefront:
+        groupId: com.wavefront
+        artifactId: wavefront-spring-boot-bom
+        versionProperty: wavefront.version
+        mappings:
+          - compatibilityRange: "[2.1.0.RELEASE,2.4.0-M1)"
+            version: 2.0.2
+          - compatibilityRange: "[2.4.0-M1,2.5.0-M1)"
+            version: 2.1.1
+          - compatibilityRange: "[2.5.0-M1,2.7.0-M1)"
+            version: 2.2.2
+          - compatibilityRange: "[2.7.0-M1,3.0.0-M1)"
+            version: 2.3.1
+      solace-spring-boot:
+        groupId: com.solace.spring.boot
+        artifactId: solace-spring-boot-bom
+        versionProperty: solace-spring-boot.version
+        mappings:
+          - compatibilityRange: "[2.3.0.M1,2.6.0-M1)"
+            version: 1.1.0
+          - compatibilityRange: "[2.6.0.M1,3.0.0-M1)"
+            version: 1.2.2
+      codecentric-spring-boot-admin:
+        groupId: de.codecentric
+        artifactId: spring-boot-admin-dependencies
+        versionProperty: spring-boot-admin.version
+        mappings:
+          - compatibilityRange: "[2.3.0.M1,2.5.0-M1)"
+            version: 2.4.3
+          - compatibilityRange: "[2.5.0.M1,2.6.0-M1)"
+            version: 2.5.6
+          - compatibilityRange: "[2.6.0.M1,2.7.0-M1)"
+            version: 2.6.8
+          - compatibilityRange: "[2.7.0.M1,3.0.0-M1)"
+            version: 2.7.4
+          - compatibilityRange: "[3.0.0-M1,3.1.0-M1)"
+            version: 3.0.0-M4
     maven:
       parent:
         includeSpringBootBom: true
@@ -100,7 +152,7 @@ initializr:
     - name: Dubbo Governance
       content:
       - name: Zookeeper (default)
-        id: dubbo-zookeeper
+        id: dubbo-governance-zookeeper
         groupId: org.apache.dubbo
         artifactId: dubbo-dependencies-zookeeper
         type: pom
@@ -110,7 +162,7 @@ initializr:
         bom: apache-dubbo-zookeeper
         codeOnly: false
       - name: Zookeeper-curator5
-        id: dubbo-zookeeper-curator5
+        id: dubbo-governance-zookeeper-curator5
         groupId: org.apache.dubbo
         artifactId: dubbo-dependencies-zookeeper-curator5
         type: pom
@@ -120,7 +172,7 @@ initializr:
         bom: apache-dubbo-zookeeper-curator5
         codeOnly: false
       - name: Nacos
-        id: dubbo-nacos
+        id: dubbo-governance-nacos
         groupId: com.alibaba.nacos
         artifactId: nacos-client
         versionProperty: nacos.version
@@ -130,17 +182,17 @@ initializr:
         compatibilityRange: "[2.0.0.RELEASE,3.1.0-M1)"
         codeOnly: false
       - name: Apollo
-        id: dubbo-apollo
+        id: dubbo-governance-apollo
         groupId: com.ctrip.framework.apollo
         artifactId: apollo-client
         versionProperty: apollo.version
         version: 2.1.0
         description: "使用 Apollo 作为配置中心"
         starter: false
-        compatibilityRange: "[2.0.0.RELEASE,3.1.0-M1)"
+        compatibilityRange: "2.0.0.RELEASE"
         codeOnly: false
       - name: Redis
-        id: dubbo-redis
+        id: dubbo-governance-redis
         groupId: redis.clients
         artifactId: jedis
         versionProperty: jedis.version
@@ -152,41 +204,50 @@ initializr:
     - name: Dubbo Protocol
       content:
       - name: http2 (default)
-        id: dubbo-http2
+        id: dubbo-protocol-http2
         description: (HTTP/2) http2 protocol, streaming data exchange.
+        groupId: com.google.protobuf
+        artifactId: protobuf-java
+        version: 3.19.6
         starter: false
+        codeOnly: false
       - name: grpc
-        id: dubbo-grpc
+        id: dubbo-protocol-grpc
         description: gRPC protocol, streaming data exchange.
+        groupId: com.google.protobuf
+        artifactId: protobuf-java
+        version: 3.19.6
         starter: false
+        codeOnly: false
       - name: tcp
-        id: dubbo-tcp
+        id: dubbo-protocol-tcp
         description: Dubbo2 tcp protocol.
         starter: false
+        codeOnly: true
       - name: REST
-        id: dubbo-rest
+        id: dubbo-protocol-rest
         description: Dubbo2 rest protocol.
         starter: false
       - name: 单端口多协议
-        id: dubbo-multi-protocols
+        id: dubbo-protocol-multi-protocols
         description: port unification.
         starter: false
     - name: Dubbo Features
       content:
         - name: QoS
-          id: dubbo-qos
+          id: dubbo-features-qos
           description: qos.
           starter: false
         - name: Metrics
-          id: dubbo-metrics
+          id: dubbo-features-metrics
           description: metrics.
           starter: false
         - name: Tracing
-          id: dubbo-tracing
+          id: dubbo-features-tracing
           description: tracing.
           starter: false
         - name: 限流降级
-          id: dubbo-sentinel
+          id: dubbo-features-sentinel
           description: sentinel.
           starter: false
     - name: Developer Tools
@@ -1031,46 +1092,6 @@ initializr:
               href: 
https://codecentric.github.io/spring-boot-admin/current/#getting-started
     - name: Observability
       content:
-        - name: Datadog
-          id: datadog
-          groupId: io.micrometer
-          artifactId: micrometer-registry-datadog
-          scope: runtime
-          starter: false
-          description: Publish Micrometer metrics to Datadog, a dimensional 
time-series SaaS with built-in dashboarding and alerting.
-          links:
-            - rel: reference
-              href: 
https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/#actuator.metrics.export.datadog
-        - name: Influx
-          id: influx
-          groupId: io.micrometer
-          artifactId: micrometer-registry-influx
-          scope: runtime
-          starter: false
-          description: Publish Micrometer metrics to InfluxDB, a dimensional 
time-series server that support real-time stream processing of data.
-          links:
-            - rel: reference
-              href: 
https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/#actuator.metrics.export.influx
-        - name: Graphite
-          id: graphite
-          groupId: io.micrometer
-          artifactId: micrometer-registry-graphite
-          scope: runtime
-          starter: false
-          description: Publish Micrometer metrics to Graphite, a hierarchical 
metrics system backed by a fixed-size database.
-          links:
-            - rel: reference
-              href: 
https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/#actuator.metrics.export.graphite
-        - name: New Relic
-          id: new-relic
-          groupId: io.micrometer
-          artifactId: micrometer-registry-new-relic
-          scope: runtime
-          starter: false
-          description: Publish Micrometer metrics to New Relic, a SaaS 
offering with a full UI and a query language called NRQL.
-          links:
-            - rel: reference
-              href: 
https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/#actuator.metrics.export.newrelic
         - name: Prometheus
           id: prometheus
           groupId: io.micrometer
@@ -1081,46 +1102,6 @@ initializr:
           links:
             - rel: reference
               href: 
https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/#actuator.metrics.export.prometheus
-        - name: Distributed Tracing
-          id: distributed-tracing
-          description: Enable span and trace IDs in logs.
-          groupId: io.micrometer
-          artifactId: micrometer-tracing-bridge-brave
-          starter: false
-          mappings:
-            - compatibility-range: "[2.3.0.M1,3.0.0-M1)"
-              groupId: org.springframework.cloud
-              artifactId: spring-cloud-starter-sleuth
-              bom: spring-cloud
-              starter: true
-        - name: Wavefront
-          id: wavefront
-          description: Publish metrics and optionally distributed traces to 
Tanzu Observability by Wavefront, a SaaS-based metrics monitoring and analytics 
platform that lets you visualize, query, and alert over data from across your 
entire stack.
-          groupId: io.micrometer
-          artifactId: micrometer-registry-wavefront
-          scope: runtime
-          starter: false
-          mappings:
-            - compatibility-range: "[2.3.0.M1,3.0.0-M1)"
-              groupId: com.wavefront
-              artifactId: wavefront-spring-boot-starter
-              bom: wavefront
-              starter: true
-          links:
-            - rel: reference
-              href: https://docs.wavefront.com/wavefront_springboot.html
-              description: Wavefront for Spring Boot documentation
-        - name: Zipkin
-          id: zipkin
-          description: Enable and expose span and trace IDs to Zipkin.
-          groupId: io.zipkin.reporter2
-          artifactId: zipkin-reporter-brave
-          starter: false
-          mappings:
-            - compatibilityRange: "[2.0.0.RELEASE,3.0.0-M1)"
-              groupId: org.springframework.cloud
-              artifactId: spring-cloud-sleuth-zipkin
-              bom: spring-cloud
     - name: Testing
       content:
         - name: Spring REST Docs
@@ -1144,27 +1125,6 @@ initializr:
           links:
             - rel: reference
               href: https://www.testcontainers.org/
-        - name: Contract Verifier
-          bom: spring-cloud
-          id: cloud-contract-verifier
-          description: Moves TDD to the level of software architecture by 
enabling Consumer Driven Contract (CDC) development.
-          groupId: org.springframework.cloud
-          artifactId: spring-cloud-starter-contract-verifier
-          scope: test
-          links:
-            - rel: reference
-              href: 
https://cloud.spring.io/spring-cloud-contract/reference/htmlsingle/
-        - name: Contract Stub Runner
-          bom: spring-cloud
-          compatibilityRange: "[2.3.0.M1,3.0.0-M1)"
-          id: cloud-contract-stub-runner
-          description: Stub Runner for HTTP/Messaging based communication. 
Allows creating WireMock stubs from RestDocs tests.
-          groupId: org.springframework.cloud
-          artifactId: spring-cloud-starter-contract-stub-runner
-          scope: test
-          links:
-            - rel: reference
-              href: 
https://cloud.spring.io/spring-cloud-contract/reference/htmlsingle/#features-stub-runner
         - name: Embedded LDAP Server
           id: unboundid-ldap
           description: Provides a platform neutral way for running a LDAP 
server in unit tests.
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-governance-nacos/resources/application.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-governance-nacos/resources/application.properties.mustache
new file mode 100644
index 0000000..1ea6434
--- /dev/null
+++ 
b/initializer-generator/src/main/resources/templates/codes/dubbo-governance-nacos/resources/application.properties.mustache
@@ -0,0 +1,9 @@
+
+# Nacos 注册中心配置说明 
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/registry/nacos/
+# Nacos will be also used as registry and metadata centers by default, use the 
following configuration to stop using registry as metadata and config center.
+# dubbo.registry.useAsMetadataCenter=false
+# dubbo.registry.useAsConfigCenter=false
+# Explicitly specify different metadata & config centers will also stop 
reusing the registry cluster.
+# dubbo.metadata-report.address=zookeeper://host:port
+# dubbo.config-center.address=apollo://host:port
+dubbo.registry.address: nacos://${nacos.address:127.0.0.1}:8848
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-governance-redis/resources/application.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-governance-redis/resources/application.properties.mustache
new file mode 100644
index 0000000..204d962
--- /dev/null
+++ 
b/initializer-generator/src/main/resources/templates/codes/dubbo-governance-redis/resources/application.properties.mustache
@@ -0,0 +1,3 @@
+
+# 使用 Redis 作为元数据中心 
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/metadata-center/redis/
+dubbo.metadata-report.address=redis://${redis.address:127.0.0.1}:6379
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-governance-zookeeper-curator5/resources/application.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-governance-zookeeper-curator5/resources/application.properties.mustache
new file mode 100644
index 0000000..33bbeca
--- /dev/null
+++ 
b/initializer-generator/src/main/resources/templates/codes/dubbo-governance-zookeeper-curator5/resources/application.properties.mustache
@@ -0,0 +1,9 @@
+
+# zookeeper 作为注册中心配置说明  
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/registry/zookeeper/
+# Zookeeper will be also used as registry and metadata centers by default, use 
the following configuration to stop using registry as metadata and config 
center.
+# dubbo.registry.useAsMetadataCenter=false
+# dubbo.registry.useAsConfigCenter=false
+# Explicitly specify different metadata & config centers will also stop 
reusing the registry cluster.
+# dubbo.metadata-report.address=nacos://host:port
+# dubbo.config-center.address=apollo://host:port
+dubbo.registry.address=zookeeper://${zookeeper.address:127.0.0.1}:2181
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-idl/java/DemoServiceImpl.java.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-idl/java/DemoServiceImpl.java.mustache
deleted file mode 100644
index c10a175..0000000
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo-idl/java/DemoServiceImpl.java.mustache
+++ /dev/null
@@ -1,12 +0,0 @@
-package {{basePackage}}.dubbo.service;
-
-import org.apache.dubbo.config.annotation.DubboService;
-
-@DubboService
-public class DemoServiceImpl implements DemoService {
-
-    @Override
-    public String sayHello(String name) {
-        return "Hello " + name;
-    }
-}
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-idl/proto/Greet.proto.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-idl/proto/Greet.proto.mustache
new file mode 100644
index 0000000..62c358b
--- /dev/null
+++ 
b/initializer-generator/src/main/resources/templates/codes/dubbo-idl/proto/Greet.proto.mustache
@@ -0,0 +1,23 @@
+syntax = "proto3";
+
+option java_multiple_files = true;
+
+package {{basePackage}}.dubbo.api;
+
+
+// The request message containing the user's name.
+message GreeterRequest {
+  string name = 1;
+}
+
+// The response message containing the greetings
+message GreeterReply {
+  string message = 1;
+}
+
+service Greeter{
+
+  // unary
+  rpc greet(GreeterRequest) returns (GreeterReply);
+
+}
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-idl/resources/log4j.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-idl/resources/log4j.properties.mustache
new file mode 100644
index 0000000..441217c
--- /dev/null
+++ 
b/initializer-generator/src/main/resources/templates/codes/dubbo-idl/resources/log4j.properties.mustache
@@ -0,0 +1,12 @@
+###set log levels###
+log4j.rootLogger=info, stdout
+###output to the console###
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target=System.out
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=[%d{hh:mm:ss:sss}] %5p %c{2}: 
%m%n
+log4j.logger.org.apache.zookeeper=warn
+log4j.logger.org.apache.dubbo.registry.zookeeper=warn
+log4j.logger.org.apache.dubbo.config.deploy=warn
+log4j.logger.org.apache.dubbo.registry.client=warn
+log4j.logger.org.apache.dubbo.rpc.model=warn
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-default/api/java/DemoService.java.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-default/api/java/DemoService.java.mustache
deleted file mode 100644
index d95b727..0000000
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-default/api/java/DemoService.java.mustache
+++ /dev/null
@@ -1,10 +0,0 @@
-package {{basePackage}}.service;
-
-import {{basePackage}}.dto.RequestData;
-import {{basePackage}}.dto.ResponseData;
-
-public interface DemoService {
-
-    ResponseData service(RequestData param);
-
-}
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-default/api/java/RequestData.java.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-default/api/java/RequestData.java.mustache
deleted file mode 100644
index b5bfe3b..0000000
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-default/api/java/RequestData.java.mustache
+++ /dev/null
@@ -1,26 +0,0 @@
-package {{basePackage}}.dto;
-
-import java.io.Serializable;
-
-public class RequestData implements Serializable {
-
-    private String data1;
-
-    private int data2;
-
-    public String getData1() {
-        return data1;
-    }
-
-    public void setData1(String data1) {
-        this.data1 = data1;
-    }
-
-    public int getData2() {
-        return data2;
-    }
-
-    public void setData2(int data2) {
-        this.data2 = data2;
-    }
-}
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-default/api/java/ResponseData.java.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-default/api/java/ResponseData.java.mustache
deleted file mode 100644
index 1515c6f..0000000
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-default/api/java/ResponseData.java.mustache
+++ /dev/null
@@ -1,26 +0,0 @@
-package {{basePackage}}.dto;
-
-import java.io.Serializable;
-
-public class ResponseData implements Serializable {
-
-    private String data1;
-
-    private int data2;
-
-    public String getData1() {
-        return data1;
-    }
-
-    public void setData1(String data1) {
-        this.data1 = data1;
-    }
-
-    public int getData2() {
-        return data2;
-    }
-
-    public void setData2(int data2) {
-        this.data2 = data2;
-    }
-}
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-default/java/DemoServiceImpl.java.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-default/java/DemoServiceImpl.java.mustache
deleted file mode 100644
index 933a69b..0000000
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-default/java/DemoServiceImpl.java.mustache
+++ /dev/null
@@ -1,15 +0,0 @@
-package {{basePackage}}.service;
-
-import {{basePackage}}.dto.RequestData;
-import {{basePackage}}.dto.ResponseData;
-import org.apache.dubbo.config.annotation.DubboService;
-
-@DubboService
-public class DemoServiceImpl implements DemoService {
-
-    @Override
-    public ResponseData service(RequestData param) {
-        ResponseData responseData = new ResponseData();
-        return responseData;
-    }
-}
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-grpc/api/proto/DemoService.proto.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-grpc/api/proto/DemoService.proto.mustache
deleted file mode 100644
index 42589e3..0000000
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-grpc/api/proto/DemoService.proto.mustache
+++ /dev/null
@@ -1,22 +0,0 @@
-syntax = "proto3";
-
-option java_multiple_files = true;
-option java_package = "{{basePackage}}";
-option java_outer_classname = "DemoServiceProto";
-option objc_class_prefix = "DSP";
-
-// The greeting service definition.
-service DemoService {
-  // Sends a greeting
-  rpc service (RequestData) returns (ResponseData) {}
-}
-
-// The request message containing the user's name.
-message RequestData {
-  string name = 1;
-}
-
-// The response message containing the greetings
-message ResponseData {
-  string message = 1;
-}
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-grpc/java/DemoServiceImpl.java.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-grpc/java/DemoServiceImpl.java.mustache
deleted file mode 100644
index dafac0b..0000000
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-grpc/java/DemoServiceImpl.java.mustache
+++ /dev/null
@@ -1,19 +0,0 @@
-package {{basePackage}}.service;
-
-import {{basePackage}}.RequestData;
-import {{basePackage}}.ResponseData;
-import {{basePackage}}.DemoServiceGrpc;
-import {{basePackage}}.DubboDemoServiceGrpc;
-import io.grpc.stub.StreamObserver;
-import org.apache.dubbo.config.annotation.DubboService;
-
-@DubboService
-public class DemoServiceImpl extends DubboDemoServiceGrpc.DemoServiceImplBase 
implements DubboDemoServiceGrpc.IDemoService {
-
-    @Override
-    public void service(RequestData request, StreamObserver<ResponseData> 
responseObserver) {
-        ResponseData reply = ResponseData.newBuilder().setMessage("Hello " + 
request.getName()).build();
-        responseObserver.onNext(reply);
-        responseObserver.onCompleted();
-    }
-}
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-grpc/resources/application.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-grpc/resources/application.properties.mustache
index 02e5c72..da27082 100644
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-grpc/resources/application.properties.mustache
+++ 
b/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-grpc/resources/application.properties.mustache
@@ -1,4 +1,4 @@
 
 # 设置dubbo传输协议
 dubbo.protocol.name=grpc
-dubbo.protocol.port=-1
\ No newline at end of file
+dubbo.protocol.port=50051
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-multi-protocols/application.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-multi-protocols/application.properties.mustache
new file mode 100644
index 0000000..75666f9
--- /dev/null
+++ 
b/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-multi-protocols/application.properties.mustache
@@ -0,0 +1,4 @@
+
+# 设置dubbo传输协议
+dubbo.protocol.name=rest
+dubbo.protocol.port=8080
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-rest/resources/application.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-rest/resources/application.properties.mustache
new file mode 100644
index 0000000..75666f9
--- /dev/null
+++ 
b/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-rest/resources/application.properties.mustache
@@ -0,0 +1,4 @@
+
+# 设置dubbo传输协议
+dubbo.protocol.name=rest
+dubbo.protocol.port=8080
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-default/resources/application.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-tcp/resources/application.properties.mustache
similarity index 67%
rename from 
initializer-generator/src/main/resources/templates/codes/dubbo-protocol-default/resources/application.properties.mustache
rename to 
initializer-generator/src/main/resources/templates/codes/dubbo-protocol-tcp/resources/application.properties.mustache
index 295f983..6a450af 100644
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-default/resources/application.properties.mustache
+++ 
b/initializer-generator/src/main/resources/templates/codes/dubbo-protocol-tcp/resources/application.properties.mustache
@@ -1,4 +1,4 @@
 
 # 设置dubbo传输协议
 dubbo.protocol.name=dubbo
-dubbo.protocol.port=-1
\ No newline at end of file
+dubbo.protocol.port=20880
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-registry-nacos/resources/application.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-registry-nacos/resources/application.properties.mustache
deleted file mode 100644
index e6811f4..0000000
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo-registry-nacos/resources/application.properties.mustache
+++ /dev/null
@@ -1,3 +0,0 @@
-
-# dubbo nacos注册中心说明 
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/registry/nacos/
-dubbo.registry.address: nacos://nacos:nacos@${nacos.address:127.0.0.1}:8848
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-registry-zookeeper/resources/application.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-registry-zookeeper/resources/application.properties.mustache
deleted file mode 100644
index 2dd9adb..0000000
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo-registry-zookeeper/resources/application.properties.mustache
+++ /dev/null
@@ -1,4 +0,0 @@
-
-# dubbo zookeeper注册中心说明  
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/registry/zookeeper/
-# zookeeper 配置项手册 
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/config/properties/#registry
-dubbo.registry.address=zookeeper://${zookeeper.address:127.0.0.1}:2181
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-serialization-hessian/resources/application.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-serialization-hessian/resources/application.properties.mustache
deleted file mode 100644
index a15409d..0000000
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo-serialization-hessian/resources/application.properties.mustache
+++ /dev/null
@@ -1,3 +0,0 @@
-
-# 设置dubbo序列化协议
-dubbo.protocol.serialization=hessian2
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-starter/resources/application.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-starter/resources/application.properties.mustache
deleted file mode 100644
index d317588..0000000
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo-starter/resources/application.properties.mustache
+++ /dev/null
@@ -1,3 +0,0 @@
-
-# dubbo 服务名
-dubbo.application.name={{appShotName}}-{{module}}
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-zookeeper/resources/application.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-zookeeper/resources/application.properties.mustache
deleted file mode 100644
index eb58b1d..0000000
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo-zookeeper/resources/application.properties.mustache
+++ /dev/null
@@ -1,9 +0,0 @@
-# dubbo zookeeper  
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/registry/zookeeper/
-# Registry 配置项手册 
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/config/properties/#registry
-dubbo.registry.address=zookeeper://${zookeeper.address:127.0.0.1}:2181
-# Use the following configuration to stop using registry as metadata and 
config center.
-# dubbo.registry.useAsMetadataCenter=false
-# dubbo.registry.useAsConfigCenter=false
-# Explicitly specify different metadata & config centers will also stop 
reusing the registry cluster.
-# dubbo.metadata-report.address=nacos://host:port
-# dubbo.config-center.address=apollo://host:port
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo/java/Consumer.java.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo/java/Consumer.java.mustache
new file mode 100644
index 0000000..c9ab847
--- /dev/null
+++ 
b/initializer-generator/src/main/resources/templates/codes/dubbo/java/Consumer.java.mustache
@@ -0,0 +1,21 @@
+package {{basePackage}}.dubbo.consumer;
+
+import {{basePackage}}.dubbo.api.DemoService;
+
+import org.apache.dubbo.config.annotation.DubboReference;
+
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+@Component
+public class Consumer implements CommandLineRunner {
+    @DubboReference
+    private DemoService demoService;
+
+    @Override
+    public void run(String... args) throws Exception {
+
+        String result = demoService.sayHello("world");
+        System.out.println("Receive result ======> " + result);
+    }
+}
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo/java/DemoServiceImpl.java.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo/java/DemoServiceImpl.java.mustache
index 6cc8311..cd72113 100644
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo/java/DemoServiceImpl.java.mustache
+++ 
b/initializer-generator/src/main/resources/templates/codes/dubbo/java/DemoServiceImpl.java.mustache
@@ -1,6 +1,6 @@
 package {{basePackage}}.dubbo.service;
 
-import {{basePackage}}.dubbo.api.DemoService
+import {{basePackage}}.dubbo.api.DemoService;
 
 import org.apache.dubbo.config.annotation.DubboService;
 
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo/resources/application.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo/resources/application.properties.mustache
index 8dadfd0..ab7f0f0 100644
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo/resources/application.properties.mustache
+++ 
b/initializer-generator/src/main/resources/templates/codes/dubbo/resources/application.properties.mustache
@@ -1 +1,4 @@
+
+# Dubbo 应用名
 dubbo.application.name={{applicationName}}
+dubbo.application.logger=slf4j
\ No newline at end of file
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo/resources/log4j.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo/resources/log4j.properties.mustache
new file mode 100644
index 0000000..441217c
--- /dev/null
+++ 
b/initializer-generator/src/main/resources/templates/codes/dubbo/resources/log4j.properties.mustache
@@ -0,0 +1,12 @@
+###set log levels###
+log4j.rootLogger=info, stdout
+###output to the console###
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target=System.out
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=[%d{hh:mm:ss:sss}] %5p %c{2}: 
%m%n
+log4j.logger.org.apache.zookeeper=warn
+log4j.logger.org.apache.dubbo.registry.zookeeper=warn
+log4j.logger.org.apache.dubbo.config.deploy=warn
+log4j.logger.org.apache.dubbo.registry.client=warn
+log4j.logger.org.apache.dubbo.rpc.model=warn

Reply via email to