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 4afd656032cd59027e564c5c1000ac8de7654f11
Author: chickenlj <[email protected]>
AuthorDate: Fri Apr 14 11:28:26 2023 +0800

    Add range check for dubbo version.
---
 README-zh.md                                       |  29 ++--
 README.md                                          |  25 ++--
 ...alizerProjectRequestToDescriptionConverter.java |  42 ++++--
 .../metadata/InitializerProperties.java            |   2 +-
 .../src/main/resources/metadata.yaml               | 154 +++++++++++----------
 .../resources/application.properties.mustache      |   7 +
 .../resources/application.properties.mustache      |   3 +-
 .../codes/dubbo-idl/proto/Greet.proto.mustache     |   1 +
 initializer-page/public/bootstrap.html             |   2 +-
 initializer-page/src/components/Application.js     |   6 +-
 .../src/components/common/icons/Icons.js           |   2 +-
 .../src/components/common/layout/Header.js         |   4 +-
 initializer-page/src/components/reducer/App.js     |  12 +-
 initializer-page/src/components/utils/ApiUtils.js  |   8 +-
 initializer-page/src/styles/_dark.scss             |   8 +-
 initializer-page/src/styles/_main.scss             |   2 +-
 initializer-page/src/styles/_variables.scss        |   4 +-
 .../static/images/dubbo_apache_colorful.png        | Bin 0 -> 58641 bytes
 18 files changed, 177 insertions(+), 134 deletions(-)

diff --git a/README-zh.md b/README-zh.md
index 1591aa6..fed6a35 100644
--- a/README-zh.md
+++ b/README-zh.md
@@ -3,34 +3,31 @@
 ---
 # Dubbo脚手架
 
-## 文档
-- [如何自定义内容](docs/howToCustom-zh.md)
-- [代码贡献](docs/CONTRIBUTING-zh.md)
+这里是 Dubbo 官方社区提供的一个托管实例 
[start.dubo.apache.org](https://start.dubbo.apache.org/).
+
+您还可以自定义代码并自行部署以满足定制化需求。
 
 ## 代码结构
-这是一个源自于 Cloud Native App Initializer 构建的云原生应用脚手架项目,你可以直接体验该项目的功能通过 
[start.aliyun.com](https://start.aliyun.com/) ,项目本身包含以下模块:
-* initializer-generator: 脚手架生成项目模块,在其中`io.spring.start.site`目录下引用了部分 
[start.spring.io](https://start.spring.io/) 的基础代码。
-* initializer-page: 脚手架前端页面
+本项目是在 Cloud Native App Initializer 开源项目基础上改造而来,以下是项目本身包含以下模块:
+* initializer-generator: Java 语言开发的脚手架生成组件
+* initializer-page: 脚手架前端 UI 页面
 
 ## 基于源代码运行
 请在本地 clone 该项目,并确保具备 Java 17 环境。
 
 ### 构建项目
-在项目根目录,执行以下命令,安装 Node 和 Yarn:
+在项目根目录,执行以下命令:
 ```shell
-mvn compile -P install-yarn
-# or
-# mvn compile -Pinstall-yarn -Dos.arch=x64 -Dmaven.test.skip
-```
-在项目根目录,执行以下命令,将静态文件 Copy 到 `initializer-generator` 模块的 target 中:
-```shell 
-mvn prepare-package
-# or
-# mvn prepare-package -Pbuild-public -Dos.arch=x64 -Dmaven.test.skip
+mvn compile -P install-yarn  -Dmaven.test.skip # 安装 Node 和 Yarn
+mvn prepare-package # 将静态文件 Copy 到 `initializer-generator` 模块的 target 中
 ```
 
+> 对于 ARM 架构,可以尝试在命令后添加如下参数后重试 `-Dos.arch=x64`
+
 ### 启动项目
 进入`initializer-generator` 模块,执行以下命令启动应用:
+
+
 ```shell
 cd initializer-generator
 mvn spring-boot:run
diff --git a/README.md b/README.md
index 9f821b0..f483c89 100644
--- a/README.md
+++ b/README.md
@@ -2,32 +2,27 @@
 
 ---
 # Dubbo Initializer
+Here is the instance hosted by Dubbo community 
[start.dubbo.apache.org](https://start.dubbo.apache.org/).
 
-## Docs
-- [Code Contribution](docs/CONTRIBUTING.md)
+You can also customize the code to meet your own requirements and deploy one 
yourself.
 
 ## Code structure
-This is a Dubbo Initializer project derived from Cloud Native App Initializer, 
you can directly experience the function of the project through 
[start.aliyun.com](https://start.aliyun.com/), which includes the following 
modules:
-* initializer-generator: Generate Project Modules, part of the basic code of 
[start.spring.io](https://start.spring.io/) is referenced in the 
`io.spring.start.site` directory.
-* initializer-page: Front page
+Dubbo Initializer is derived from Cloud Native App Initializer, which includes 
the following modules:
+* initializer-generator, java-based codebase that helps to generate the 
template project.
+* initializer-page, ui pages
 
 ## Run from source
 Please clone the project locally and make sure you have a Java 17 environment.
 
 ### Build project
-In the project root directory, execute the following commands to install 
`Node` and `Yarn`:
+In the project root directory, execute the following commands:
 ```shell
-mvn compile -P install-yarn
-# or
-# mvn compile -Pinstall-yarn -Dos.arch=x64 -Dmaven.test.skip
-```
-In the project root directory, execute the following command to copy the 
static files to the target of the `initializer-generator` module:
-```shell
-mvn prepare-package
-# or
-# mvn prepare-package -Pbuild-public -Dos.arch=x64 -Dmaven.test.skip
+mvn compile -P install-yarn  -Dmaven.test.skip # Install `Node` and `Yarn`
+mvn prepare-package # Copy the static files to the target of the 
`initializer-generator` module.
 ```
 
+> If you are running in a ARM-based system and encounter error running above 
commands, please add `-Dos.arch=x64` and try again.
+
 ### Run project
 Enter the `initializer-generator` module and execute the following command to 
start the application:
 ```shell
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 0ea93e4..25861cc 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
@@ -17,6 +17,7 @@
 package com.alibaba.initializer.controller;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -97,9 +98,14 @@ public class InitializerProjectRequestToDescriptionConverter
                            InitializrMetadata metadata) {
         validate(request, metadata);
         String springBootVersion = getSpringBootVersion(request, metadata);
-        List<Dependency> resolvedDependencies = 
getResolvedDependencies(request,
-                springBootVersion, metadata);
-        validateDependencyRange(springBootVersion, resolvedDependencies);
+        String dubboVersion = getDubboVersion(request, metadata);
+
+        List<Dependency> resolvedNonDubboDependencies = 
getResolvedDependencies(request,
+                springBootVersion, metadata, false);
+        List<Dependency> resolvedDubboDependencies = 
getResolvedDependencies(request,
+                dubboVersion, metadata, true);
+        validateDependencyRange(springBootVersion, 
resolvedNonDubboDependencies, false);
+        validateDependencyRange(dubboVersion, resolvedDubboDependencies, true);
 
         description.setApplicationName(request.getApplicationName());
         description.setArtifactId(request.getArtifactId());
@@ -114,6 +120,10 @@ public class 
InitializerProjectRequestToDescriptionConverter
         description.setPackaging(Packaging.forId(request.getPackaging()));
         description.setPlatformVersion(Version.parse(springBootVersion));
         description.setVersion(request.getVersion());
+
+        List<Dependency> resolvedDependencies = new ArrayList<>();
+        resolvedDependencies.addAll(resolvedNonDubboDependencies);
+        resolvedDependencies.addAll(resolvedDubboDependencies);
         resolvedDependencies
                 .forEach((dependency) -> 
description.addDependency(dependency.getId(),
                         MetadataBuildItemMapper.toDependency(dependency)));
@@ -203,12 +213,12 @@ public class 
InitializerProjectRequestToDescriptionConverter
         });
     }
 
-    private void validateDependencyRange(String springBootVersion, 
List<Dependency> resolvedDependencies) {
+    private void validateDependencyRange(String version, List<Dependency> 
resolvedDependencies, boolean isDubbo) {
         resolvedDependencies.forEach((dep) -> {
-            if (!dep.match(Version.parse(springBootVersion))) {
+            if (!dep.match(Version.parse(version))) {
                 throw new InvalidProjectRequestException(
                         "Dependency '" + dep.getId() + "' is not compatible "
-                                + "with Spring Boot " + springBootVersion);
+                                + "with " + (isDubbo ? "Dubbo" : "Spring Boot 
") + version);
             }
         });
     }
@@ -223,13 +233,23 @@ public class 
InitializerProjectRequestToDescriptionConverter
                 : metadata.getBootVersions().getDefault().getId();
     }
 
-    private List<Dependency> 
getResolvedDependencies(io.spring.initializr.web.project.ProjectRequest 
request, String springBootVersion, InitializrMetadata metadata) {
+    private String 
getDubboVersion(io.spring.initializr.web.project.ProjectRequest request, 
InitializrMetadata metadata) {
+        InitializerMetadata customizedMetadata = (InitializerMetadata)metadata;
+        ProjectRequest customizedRequest = (ProjectRequest)request;
+
+        return (customizedRequest.getDubboVersion() != null) ? 
customizedRequest.getDubboVersion()
+                : customizedMetadata.getDubboVersions().getDefault().getId();
+    }
+
+    private List<Dependency> 
getResolvedDependencies(io.spring.initializr.web.project.ProjectRequest 
request, String springBootVersion, InitializrMetadata metadata, boolean 
isDubbo) {
         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());
+        return depIds.stream()
+                .filter(depId -> (isDubbo && depId.contains("dubbo")) || 
(!isDubbo && !depId.contains("dubbo")))
+                .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) {
diff --git 
a/initializer-generator/src/main/java/com/alibaba/initializer/metadata/InitializerProperties.java
 
b/initializer-generator/src/main/java/com/alibaba/initializer/metadata/InitializerProperties.java
index 21a6bb9..728ef40 100644
--- 
a/initializer-generator/src/main/java/com/alibaba/initializer/metadata/InitializerProperties.java
+++ 
b/initializer-generator/src/main/java/com/alibaba/initializer/metadata/InitializerProperties.java
@@ -107,7 +107,7 @@ public class InitializerProperties extends 
InitializrConfiguration {
      * Description metadata.
      */
     @JsonIgnore
-    private final InitializrProperties.SimpleElement description = new 
InitializrProperties.SimpleElement("Demo project for Spring Boot");
+    private final InitializrProperties.SimpleElement description = new 
InitializrProperties.SimpleElement("Demo project for Apache Dubbo");
 
     /**
      * Package name metadata.
diff --git a/initializer-generator/src/main/resources/metadata.yaml 
b/initializer-generator/src/main/resources/metadata.yaml
index 355340e..91bd9ca 100644
--- a/initializer-generator/src/main/resources/metadata.yaml
+++ b/initializer-generator/src/main/resources/metadata.yaml
@@ -142,6 +142,7 @@ initializr:
         artifactId: dubbo-spring-boot-starter
         description: Use IDL as the standard Dubbo service definition
         starter: false
+        compatibilityRange: "3.1.8"
         archCfg:
           dubbo:
             modules:
@@ -149,16 +150,16 @@ initializr:
                 code: true
               service:
                 code: true
-    - name: Dubbo Governance
+    - name: Dubbo Registry & Config & Metadata
       content:
       - name: Zookeeper (default)
         id: dubbo-governance-zookeeper
         groupId: org.apache.dubbo
         artifactId: dubbo-dependencies-zookeeper
         type: pom
-        description: "使用 Zookeeper 作为服务治理中心,可选作为注册中心、配置中心、元数据中心"
+        description: "Zookeeper as registry, will also be used as metadata and 
config centers by default."
         starter: false
-        compatibilityRange: "[2.0.0.RELEASE,3.1.0-M1)"
+        compatibilityRange: "2.7.21"
         bom: apache-dubbo-zookeeper
         codeOnly: false
       - name: Zookeeper-curator5
@@ -166,9 +167,9 @@ initializr:
         groupId: org.apache.dubbo
         artifactId: dubbo-dependencies-zookeeper-curator5
         type: pom
-        description: "[高版本] 使用 Zookeeper 作为服务治理中心,可选作为注册中心、配置中心、元数据中心"
+        description: "[Requires 3.5+ zk server and curator5] Zookeeper as 
registry, will also be used as metadata and config centers by default."
         starter: false
-        compatibilityRange: "[2.0.0.RELEASE,3.1.0-M1)"
+        compatibilityRange: "3.1.8"
         bom: apache-dubbo-zookeeper-curator5
         codeOnly: false
       - name: Nacos
@@ -177,9 +178,9 @@ initializr:
         artifactId: nacos-client
         versionProperty: nacos.version
         version: 2.2.1
-        description: "使用 Nacos 作为服务治理中心,可选作为注册中心、配置中心、元数据中心"
+        description: "Nacos as registry, will also be used as metadata and 
config centers by default."
         starter: false
-        compatibilityRange: "[2.0.0.RELEASE,3.1.0-M1)"
+        compatibilityRange: "2.7.21"
         codeOnly: false
       - name: Apollo
         id: dubbo-governance-apollo
@@ -187,9 +188,9 @@ initializr:
         artifactId: apollo-client
         versionProperty: apollo.version
         version: 2.1.0
-        description: "使用 Apollo 作为配置中心"
+        description: "Apollo as config center, will override the default 
config center configuration."
         starter: false
-        compatibilityRange: "2.0.0.RELEASE"
+        compatibilityRange: "2.7.21"
         codeOnly: false
       - name: Redis
         id: dubbo-governance-redis
@@ -197,59 +198,87 @@ initializr:
         artifactId: jedis
         versionProperty: jedis.version
         version: 3.9.0
-        description: "使用 Redis 作为元数据中心"
+        description: "Redis as metadata center, will override the default 
metadata center configuration."
         starter: false
-        compatibilityRange: "[2.0.0.RELEASE,3.1.0-M1)"
+        compatibilityRange: "2.7.21"
         codeOnly: false
     - name: Dubbo Protocol
       content:
-      - name: http2 (default)
-        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-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-protocol-tcp
-        description: Dubbo2 tcp protocol.
-        starter: false
-        codeOnly: true
-      - name: REST
-        id: dubbo-protocol-rest
-        description: Dubbo2 rest protocol.
-        starter: false
-      - name: 单端口多协议
-        id: dubbo-protocol-multi-protocols
-        description: port unification.
-        starter: false
-    - name: Dubbo Features
-      content:
-        - name: QoS
-          id: dubbo-features-qos
-          description: qos.
+        - name: TCP (default)
+          id: dubbo-protocol-tcp
+          description: "Dubbo2 rpc protocol built on top of tcp with extremely 
high performance."
           starter: false
-        - name: Metrics
-          id: dubbo-features-metrics
-          description: metrics.
+          codeOnly: true
+          compatibilityRange: "2.7.21"
+        - name: HTTP2 (recommended)
+          id: dubbo-protocol-http2
+          description: "[Requires Dubbo3] The Triple (http2) rpc protocol that 
is fully compatible with gRPC, can be visited by cURL and Browser directly."
+          groupId: com.google.protobuf
+          artifactId: protobuf-java
+          version: 3.19.6
           starter: false
-        - name: Tracing
-          id: dubbo-features-tracing
-          description: tracing.
+          codeOnly: false
+          compatibilityRange: "3.1.8"
+        - name: gRPC
+          id: dubbo-protocol-grpc
+          description: "[Requires Dubbo3] The standard gRPC protocol."
+          groupId: com.google.protobuf
+          artifactId: protobuf-java
+          version: 3.19.6
           starter: false
-        - name: 限流降级
-          id: dubbo-features-sentinel
-          description: sentinel.
+          codeOnly: false
+          compatibilityRange: "3.1.8"
+        - name: REST
+          id: dubbo-protocol-rest
+          description: "Rest style rpc that uses HTTP+JSON on the wire, works 
for both backend and browser, provides support for both JAX-RS and Spring Web 
annotations."
           starter: false
+          codeOnly: true
+          compatibilityRange: "3.1.8"
+#    - name: Dubbo Features
+#      content:
+#        - name: QoS
+#          id: dubbo-features-qos
+#          description: "Dubbo built-in endpoints that let you monitor and 
manage your Dubbo instance and the services inside it."
+#          starter: false
+#          codeOnly: true
+#        - name: Metrics Prometheus
+#          id: dubbo-features-prometheus
+#          description: "[Requires Dubbo 3.2+] Enables collections of standard 
Dubbo metrics which can be used to report to Prometheus for visualization using 
Grafana and Admin."
+#          bom: apache-dubbo
+#          starter: false
+#          groupId: org.apache.dubbo
+#          artifactId: dubbo-spring-boot-observability-starter
+#        - name: Tracing Zipkin
+#          id: dubbo-features-tracing-zipkin
+#          description: "[Requires Dubbo 3.2+] Enable and expose span and 
trace IDs to Zipkin."
+#          bom: apache-dubbo
+#          starter: false
+#          groupId: org.apache.dubbo
+#          artifactId: dubbo-spring-boot-observability-starter
+#        - name: Resilience Sentinel
+#          id: dubbo-features-sentinel
+#          description: "Dubbo circuit breaker with Sentinel as the underlying 
implementation."
+#          starter: false
+#          groupId: com.alibaba.csp
+#          artifactId: sentinel-apache-dubbo3-adapter
+#          version: 1.8.6
+#          dependencies: ["sentinel-transport-http"]
+#        - name: sentinel-transport-http
+#          id: dubbo-transport-http
+#          description: ""
+#          starter: false
+#          groupId: com.alibaba.csp
+#          artifactId: sentinel-transport-simple-http
+#          version: 1.8.6
+#          hide: true
+#        - name: Transaction Seata
+#          id: dubbo-features-seata
+#          description: "Dubbo transaction solution to guarantee data 
consistency with Seata as the underlying implementation."
+#          starter: false
+#          groupId: io.seata
+#          artifactId: seata-spring-boot-starter
+#          version: 1.6.1
+#          codeOnly: false
     - name: Developer Tools
       content:
         - name: Arthas
@@ -469,21 +498,6 @@ initializr:
           links:
             - rel: reference
               href: 
https://docs.spring.io/spring-boot/docs/{bootVersion}/reference/htmlsingle/#web.servlet.jersey
-        - name: Vaadin
-          id: vaadin
-          facets:
-            - web
-          groupId: com.vaadin
-          artifactId: vaadin-spring-boot-starter
-          description: A web framework that allows you to write UI in pure 
Java without getting bogged down in JS, HTML, and CSS.
-          bom: vaadin
-          compatibilityRange: "[2.0.0.RELEASE,2.8.0-M1)"
-          links:
-            - rel: guide
-              href: https://spring.io/guides/gs/crud-with-vaadin/
-              description: Creating CRUD UI with Vaadin
-            - rel: reference
-              href: https://vaadin.com/spring
     - name: Template Engines
       content:
         - name: Thymeleaf
@@ -1208,9 +1222,9 @@ initializr:
   bootVersions:
     - name: 3.0.5
       id: 3.0.5
-      default: true
     - name: 2.7.10
       id: 2.7.10
+      default: true
   dubboVersions:
     - name: 3.2.0 (beta)
       id: 3.2.0
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-features-qos/resources/application.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-features-qos/resources/application.properties.mustache
new file mode 100644
index 0000000..a753305
--- /dev/null
+++ 
b/initializer-generator/src/main/resources/templates/codes/dubbo-features-qos/resources/application.properties.mustache
@@ -0,0 +1,7 @@
+
+# Enable QoS endpoint to monitor and manage Dubbo instance and the services 
inside
+# 
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/qos/overview/
+dubbo.application.qos-enable=true
+dubbo.application.qos-port=22222
+dubbo.application.qos-accept-foreign-ip=false
+
diff --git 
a/initializer-generator/src/main/resources/templates/codes/dubbo-governance-apollo/resources/application.properties.mustache
 
b/initializer-generator/src/main/resources/templates/codes/dubbo-governance-apollo/resources/application.properties.mustache
index bf5be3e..146f2f0 100644
--- 
a/initializer-generator/src/main/resources/templates/codes/dubbo-governance-apollo/resources/application.properties.mustache
+++ 
b/initializer-generator/src/main/resources/templates/codes/dubbo-governance-apollo/resources/application.properties.mustache
@@ -1,5 +1,6 @@
 
-# 使用 Apollo 作为配置中心 
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/config-center/apollo/
+# Apollo as config center
+# 
https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/config-center/apollo/
 dubbo.config-center.address=apollo://${apollo.address:127.0.0.1}:8080
 # dubbo.config-center.namespace=xxx
 # dubbo.config-center.group=xxx
\ 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
index 62c358b..77323e9 100644
--- 
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
@@ -1,6 +1,7 @@
 syntax = "proto3";
 
 option java_multiple_files = true;
+option java_outer_classname = "GreeterProto";
 
 package {{basePackage}}.dubbo.api;
 
diff --git a/initializer-page/public/bootstrap.html 
b/initializer-page/public/bootstrap.html
index 08d305c..991c59c 100644
--- a/initializer-page/public/bootstrap.html
+++ b/initializer-page/public/bootstrap.html
@@ -1 +1 @@
-<!doctype html><html lang="en"><head><meta charset="UTF-8"><meta 
name="viewport" 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name="data-spm" content="a2ck6"><meta name="aes-config" 
content="pid=5tYCpT&user_type=6&uid=&username="><title>Cloud Native App 
Initializer</title><link rel="shortcut icon" href="/images/favicon.ico"><meta 
http-equiv="x-ua-compatible" content="ie=edge"><link rel="canonical" 
href="https://github.com/alibaba/dubbo-initializer";><meta name="desc [...]
\ No newline at end of file
+<!doctype html><html lang="en"><head><meta charset="UTF-8"><meta 
name="viewport" 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name="data-spm" content="a2ck6"><meta name="aes-config" 
content="pid=5tYCpT&user_type=6&uid=&username="><title>Initializer 
Dubbo</title><link rel="shortcut icon" href="/images/favicon.ico"><meta 
http-equiv="x-ua-compatible" content="ie=edge"><link rel="canonical" 
href="https://github.com/apache/dubbo-initializer";><meta name="description" con 
[...]
\ No newline at end of file
diff --git a/initializer-page/src/components/Application.js 
b/initializer-page/src/components/Application.js
index 007ea9c..e2afc50 100644
--- a/initializer-page/src/components/Application.js
+++ b/initializer-page/src/components/Application.js
@@ -161,6 +161,10 @@ export default function Application() {
                   options={get(config, 'lists.dubboVersion')}
                   onChange={value => {
                       update({ dubboVersion: value })
+                      dispatch({
+                          type: 'UPDATE_DEPENDENCIES',
+                          payload: { dubboVersion: value, boot: get(values, 
'boot') },
+                      })
                   }}
               />
           </Control>
@@ -178,7 +182,7 @@ export default function Application() {
                   })
                   dispatch({
                     type: 'UPDATE_DEPENDENCIES',
-                    payload: { boot: value },
+                    payload: { boot: value, dubboVersion: get(values, 
'dubboVersion') },
                   })
                 }}
               />
diff --git a/initializer-page/src/components/common/icons/Icons.js 
b/initializer-page/src/components/common/icons/Icons.js
index 18442c3..a14837c 100644
--- a/initializer-page/src/components/common/icons/Icons.js
+++ b/initializer-page/src/components/common/icons/Icons.js
@@ -314,7 +314,7 @@ export const IconCloudTookit = () => (
 
 export const IconInitialzrTutorial = () => (
     <svg t="1603192889200" class="icon-cloud-tookit" viewBox="0 0 1376 1024" 
version="1.1"
-         xmlns="http://www.w3.org/2000/svg"; p-id="1399" width="200" 
height="200" style={{left: '20px'}}>
+         xmlns="http://www.w3.org/2000/svg"; p-id="1399" width="200" 
height="200">
         <path
             d="M596.800316 1023.986434q-3.66285 
0-7.447794-0.217058c-24.581792-1.356611-50.303136-9.048595-80.04005-17.934397-110.238211-32.789288-153.134251-29.397761-187.565038-26.630275-51.008574
 4.069833-91.842566 15.926613-127.88772 26.345386-56.177262 
16.279332-104.689672 30.293124-147.029502-6.783055C18.802629 974.239508 
3.065941 934.6129 0.054264 880.972501V186.04851c0-91.313487 68.49529-165.750733 
153.161384-167.093778a1093.645533 1093.645533 0 0 1 405.463899 0 151.831904 
151.83 [...]
             p-id="1400" fill='currentColor'></path>
diff --git a/initializer-page/src/components/common/layout/Header.js 
b/initializer-page/src/components/common/layout/Header.js
index 6487a6c..4b741c0 100644
--- a/initializer-page/src/components/common/layout/Header.js
+++ b/initializer-page/src/components/common/layout/Header.js
@@ -6,9 +6,9 @@ const Header = ({ children }) => (
     <h1 className='logo'>
       <a href='/bootstrap.html'>
         <span className='title'>
-          <strong>Dubbo</strong>应用脚手架
+          <img style='max-width:260px;' 
src='/images/dubbo_apache_colorful.png'  alt='dubbo-apache-colorful-logo'/>
         </span>
-        <span className='description'>快速创建 Dubbo 应用</span>
+        {/*<span className='description'>快速创建 Dubbo 应用</span>*/}
       </a>
     </h1>
     {children}
diff --git a/initializer-page/src/components/reducer/App.js 
b/initializer-page/src/components/reducer/App.js
index 07a657f..b749ee2 100644
--- a/initializer-page/src/components/reducer/App.js
+++ b/initializer-page/src/components/reducer/App.js
@@ -24,7 +24,7 @@ export const defaultAppContext = {
   },
 }
 
-export function reduceDependencies(boot, items) {
+export function reduceDependencies(boot, dubbo, items) {
   const groups = []
   const list = []
   const getParent = (m, name) => {
@@ -41,10 +41,12 @@ export function reduceDependencies(boot, items) {
       }
       groups.push(parent)
     }
-    const valid = isValidDependency(boot, dep)
+    const isDubbo = get(dep, 'id').indexOf('dubbo') !== -1
+    const valid = isValidDependency(boot, dubbo, dep)
+    const typeMsg = dep.id.indexOf('dubbo') === -1 ? 'Spring Boot' : 'Dubbo'
     if (!valid) {
-      message = `Requires Spring Boot ${rangeToText(
-        get(dep, 'versionRequirement')
+      message = `Requires ${typeMsg} ${rangeToText(
+          get(dep, 'versionRequirement')
       )}.`
     }
     parent.items.push({ ...dep, valid, message })
@@ -88,6 +90,7 @@ export function reducer(state, action) {
     case 'UPDATE_DEPENDENCIES': {
       const dependencies = reduceDependencies(
         get(action, 'payload.boot'),
+        get(action, 'payload.dubboVersion'),
         get(state, 'config.lists.dependencies')
       )
       return { ...state, dependencies }
@@ -108,6 +111,7 @@ export function reducer(state, action) {
       const json = get(action, 'payload', {})
       const dependencies = reduceDependencies(
         get(json, 'defaultValues.boot'),
+        get(json, 'defaultValues.dubboVersion'),
         get(json, 'lists.dependencies')
       )
       return { ...state, complete: true, config: json, dependencies }
diff --git a/initializer-page/src/components/utils/ApiUtils.js 
b/initializer-page/src/components/utils/ApiUtils.js
index 994fdd5..ac9e736 100644
--- a/initializer-page/src/components/utils/ApiUtils.js
+++ b/initializer-page/src/components/utils/ApiUtils.js
@@ -272,13 +272,13 @@ export const getConfig = json => {
   }
 }
 
-export const isValidDependency = function isValidDependency(boot, dependency) {
+export const isValidDependency = function isValidDependency(boot, dubbo, 
dependency) {
   if (!dependency) {
     return false
   }
   return get(dependency, 'versionRange')
-    ? isInRange(boot, get(dependency, 'versionRange'))
-    : true
+          ? isInRange((dependency.id.indexOf('dubbo') === -1 ? boot : dubbo), 
get(dependency, 'versionRange'))
+      : true
 }
 
 export const getQueryString = function getQueryString(values, config) {
@@ -300,7 +300,7 @@ export const getQueryString = function 
getQueryString(values, config) {
   let paramsDependencies = get(values, 'dependencies', [])
     .map(dependency => {
       const dep = config.find(it => it.id === dependency)
-      return isValidDependency(get(values, 'boot'), dep) ? dependency : null
+      return isValidDependency(get(values, 'boot'), get(values, 
'dubboVersion'), dep) ? dependency : null
     })
     .filter(dep => !!dep)
     .join(',')
diff --git a/initializer-page/src/styles/_dark.scss 
b/initializer-page/src/styles/_dark.scss
index b24be80..0cb235f 100644
--- a/initializer-page/src/styles/_dark.scss
+++ b/initializer-page/src/styles/_dark.scss
@@ -141,11 +141,11 @@ body.dark {
       border-color: $dark-background-lighter;
     }
     &.primary {
-      border-color: $dark-primary;
-      background-color: $dark-primary;
+      border-color: $dark-link;
+      background-color: $dark-link;
       &:hover {
-        border-color: darken($dark-primary, 5);
-        background-color: darken($dark-primary, 5);
+        border-color: darken($dark-link, 5);
+        background-color: darken($dark-link, 5);
       }
     }
   }
diff --git a/initializer-page/src/styles/_main.scss 
b/initializer-page/src/styles/_main.scss
index abc1a29..bae3c95 100644
--- a/initializer-page/src/styles/_main.scss
+++ b/initializer-page/src/styles/_main.scss
@@ -522,7 +522,7 @@ label {
     color: $light-color;
   }
   &.checked {
-    border-bottom-color: $light-primary;
+    border-bottom-color: $light-link;
     color: #000;
   }
   &.err {
diff --git a/initializer-page/src/styles/_variables.scss 
b/initializer-page/src/styles/_variables.scss
index 9096eb2..0af40de 100644
--- a/initializer-page/src/styles/_variables.scss
+++ b/initializer-page/src/styles/_variables.scss
@@ -11,8 +11,8 @@ $light-color-dark: #494c4e;
 $light-border: #e4e4e4;
 $light-border-dark: darken($light-border, 10);
 $light-outline: rgba(0, 0, 0, 0.2);
-$light-primary: #ff6a00;
-$light-link: #0188ff;
+$light-primary: #7D57EF;
+$light-link: #7D57EF;
 
 // Theme Dark
 
diff --git a/initializer-page/static/images/dubbo_apache_colorful.png 
b/initializer-page/static/images/dubbo_apache_colorful.png
new file mode 100644
index 0000000..850fe31
Binary files /dev/null and 
b/initializer-page/static/images/dubbo_apache_colorful.png differ

Reply via email to