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
