介绍

先前通过 Apache Maven Archetype 生成了一个项目脚手架1.0版本,模板比较固定,无法根据需要进行灵活定制,经过调研后,发现可基于Spring Starter项目进行定制,脚手架2.0版本也就应运而生。

目标

  1. 快速创建最小可运行工程
  2. 基础组件依赖管理
    1. 版本管理
    2. 帮助信息
  3. 按需生成项目结构

最终效果

实现

主流程

获取配置

通过请求服务根路径获取脚手架信息,对应接口代码

如请求: http://localhost:8080 会返回以下内容信息

接口返回了服务支持配置的元数据信息

生成工程代码

用户选择配置相应功能后,点击生成按钮,会调用 http://localhost:8080/start.zip 接口将配置信息传给服务,服务根据信息生成代码

核心功能实现

项目工程由以下几方面组成:

  1. application.yml文件
  2. 工程目录(controller, servier…)
  3. auto_publish相关目录
  4. trpc_java.yaml文件
  5. 配置相关
    1. 日志配置文件
  6. web服务相关
    1. httpApi接口
    2. httpApi实现类StartController
  7. Maven依赖管理
  8. 主启动程序自定义
  9. 测试辅助开发相关自定义
    1. applicationTest

依赖管理

根据现有常用的 Peacock 框架功能包,依赖管理配置以下模块:

  1. Starter
  2. Integration
  3. Provider
  4. Data
  5. Testing
  6. MQ
  7. Job

实践

生成一个最小可运行Web应用

命令行快速生成

1
curl -L 'http://localhost:8080/start.zip?type=peacock-project&bootVersion=1.5.7.RELEASE&groupId=com.yuewen.bookcoop&artifactId=solution_demo&name=solution_demo101&version=1.0.0-SNAPSHOT&language=java&packageName=com.yuewen.bookcoop.solution_demo&javaVersion=1.8&packaging=jar&description=solution_demo101&dependencies=integration-web&dependencies=peacock-test&dependencies=integration-common&dependencies=starter' -o solution_demo.zip

具体的依赖库元信息可以在根路径下请求获得,具体依赖信息为dependencies值对应id的值

IDEA中生成

Idea配置脚手架地址

使用本地地址如: http://localhost:8080

配置工程信息

填写好相关的业务信息与版本信息

选择依赖模块

Web应用需选择以下模块:

  1. Peacock Trpc Starter
  2. Integration Web
  3. Integration Common
  4. Peacock Test

选择完成后点击 生成 按钮生成代码

启动

在生成的代码中找到 TrpcServerApplicationTests 测试类,配置启动参数,运行 main 方法启动Web服务

启动参数如下:

1
2
3
4
-Drainbow.profiles.active=dev
-Denv_type=Development
-Denv_name=test
-Dcontainer_name=localContainer

验证

服务启动后,请求 http://localhost:18080 返回 “start pong” 则证明启动成功