学习
实践
活动
专区
工具
TVP
写文章
专栏首页杨同学technotesspring initializr脚手架搭建详解

spring initializr脚手架搭建详解

前段时间,我在基于start.spring.io,我实现了Java脚手架定制」一文中讲述了敝司的微服务脚手架落地过程中的前世今生,并提到了基于 spring initializr 的搭建了 2.0 版本的脚手架。今天我打算和你分享一下这其中的实现过程与细节,项目已经开源在 Github 上。

start-parent:https://github.com/studeyang/start-parent 欢迎 star

1、项目结构介绍

项目分为 initializr、start-client、start-site 三个部分,重要部分说明如下。

start-parent
  |- initializr                    代码生成
    |- initializr-actuator
    |- initializr-bom
    |- initializr-docs
    |- initializr-generator         生成基础工程代码
    |- initializr-generator-spring  生成 spring 工程代码
    |- initializr-generator-test    单元测试的封装
    |- initializr-generator-zebra   生成 zebra 分层架构
    |- initializr-metadata          工程元数据(pom 相关定义)
    |- initializr-parent
    |- initializr-service-sample
    |- initializr-version-resolver  版本解析
    |- initializr-web
  |- start-client                   脚手架前端
  |- start-site                     脚手架后端

工程间的依赖关系图我作了简化,图示如下。

依赖关系图

了解了项目的整体情况,下面请跟随我的思路,一起将工程搭建起来。

2、集成Gitlab

如果你想使用项目中的「创建工程」功能,则需要进行此步骤的配置。这里我以gitlab.com为例,介绍如何完成与 Gitlab 的集成。

首先需要让 Gitlab 信任我们的应用,以完成后面的登录授权跳转。在 Gitlab 平台配置脚手架应用。

添加Applications

这里我配置了本地开发环境的 Redirect URI,如果后续需要部署到服务器,则应该配置脚手架服务器的后端地址。

Application ID

配置完成后,Gitlab 就将我们的应用记录了下来,并分配了 Application ID 和 Secret,这两个字段值我们需要配置到 start-site application.yml 文件中:

security:
  base-url: https://gitlab.com
  authorization-uri: ${security.base-url}/oauth/authorize
  token-uri: ${security.base-url}/oauth/token
  user-info-uri: ${security.base-url}/api/v4/user
  redirect-uri: http://127.0.0.1:8081/oauth/redirect
  client-id: gitlab client id
  client-secret: gitlab client secret
  admin:
    name: your gitlab admin username
    password: your gitlab admin password

这里我简单介绍一下相关字段,authorization-uri, token-uri, user-info-uri 这三个字段是固定的,不需要配置。

  • • base-url:如果你使用gitlab管理项目,base-url可以设置成你搭建的gitlab地址;
  • • redirect-uri:gitlab 认证后跳转的地址,这里使用了后端来接收跳转,因为跳转会携带 code 参数,避免暴露在浏览器,提高安全性;
  • • client-id:gitlab 分配的 Application ID;
  • • client-secret:gitlab 分配的 Secret;
  • • admin.name:gitlab 的账号,用于创建工程,并将初始的工程代码提交,建议配置管理员账号;
  • • admin.password:gitlab 的账号密码;

3、添加组件

接下来添加组件依赖。这里我以casslog-spring-boot-starterJar 包为例,如果该组件仅支持部分版本的 SpringBoot,那可以配置 compatibility-range,例如:

compatibility-range: "[1.4.2.RELEASE,1.5.7.RELEASE]"

完整的配置如下。

initializr:
  dependencies:
    - name: 开源基础设施
      bom: kmw
      repository: my-rep
      content:
        - name: Casslog
          id: casslog
          groupId: io.github.studeyang
          artifactId: casslog-spring-boot-starter
          description: 日志工具类
          starter: true
          compatibility-range: "[1.4.2.RELEASE,1.5.7.RELEASE]"
          links:
            - rel: guide
              href: {用户手册}
              description: Example 快速开始
            - rel: reference
              href: {参考文档}

配置dependencies。

  • • 「name」组件依赖类别的名称,例如:开源基础设施
  • • 「bom」该类别下的依赖包管理库
  • • 「repository」该类别下的依赖包所属仓库
  • • 「content」具体的依赖包

配置content。

  • • 「name」依赖包名称
  • • 「id」依赖包唯一标识(代码中使用)
  • • 「groupId」依赖包 groupId
  • • 「artifactId」依赖包 artifactId
  • • 「description」依赖包 description
  • • 「starter」是否是 spring-boot-starter
  • • 「compatibility-range」依赖的 springboot 版本
  • • 「links」组件的使用文档

配置好的效果图如下。

组件添加效果图

4、部署应用

下面就可以将脚手架部署到服务器上了。

这里提醒一下,记得修改 Gitlab 的 redirect-uri 为脚手架服务器的地址。

4.1 步骤一:工程打包

# 打包前端工程
cd {projectRoot}/start-client
sh ../mvnw install

# 打包 initializr 项目
cd {projectRoot}/initializr
sh ../mvnw clean install -Dmaven.test.skip=true

# 打包 start-site
cd {projectRoot}/start-site
sh ../mvnw clean install -Dmaven.test.skip=true

4.2 步骤二:打 Docker 镜像

cd {projectRoot}/start-site
docker build -t start-site:0.0.1 .

运行镜像即可。效果图如下。

脚手架主界面

5、使用脚手架的正确姿势

5.1 通过HELP.md管理使用文档

在「3、添加组件」过程中所配置的文档链接将会在 HELP.md 文件中展示,示意图如下:

HELP.md

5.2 保存/分享工程

你配置好的工程可以通过「分享...」功能保存下来。

分享

5.3 在IDEA中使用脚手架

可在 IDEA 中快速创建工程,只需要配置好脚手架服务器地址即可。需要注意的是社区版的 IDEA 是没有这个功能的。

IDEA

小结

本文向你介绍了 Spring Initializr 脚手架的搭建过程,如果你在此过程中遇到了问题,可以提 ISSUE 或者在公众号「杨同学technotes」后台给我留言。

文章分享自微信公众号:
杨同学technotes

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:杨同学
原始发表时间:2022-11-28
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 项目脚手架-spring-initializr

    公司在扩张阶段没有制定统一的开发规范, 不同小组之间不存在技术交流,导致了一些问题:

    eeaters
  • spring initializr服务器搭建

    自己搭建spring Initializr服务一个这样的工具。这么做有很多优点:可以避免因为无法访问spring.io站点就无法新建SpringBoot项目的尴...

    似水的流年
  • 不重复造轮子都是骗小孩的,教你手撸 SpringBoot 脚手架!

    虽然市面上已经有了大量成熟稳定用于支撑系统建设的轮子,也就是服务、框架、组件、工具等,但对于一些较大型的公司来说,这些轮子可能并不一定能很好的支撑起系统需要承载...

    小傅哥
  • 看了 Spring 官网脚手架真香,也撸一个 SpringBoot DDD 微服务的脚手架!

    虽然市面上已经有了大量成熟稳定用于支撑系统建设的轮子,也就是服务、框架、组件、工具等,但对于一些较大型的公司来说,这些轮子可能并不一定能很好的支撑起系统需要承载...

    小傅哥
  • 使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程

    在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建。而创建的方式多种多样,我们可以通过Maven来...

    程序猿DD
  • 基于start.spring.io,我实现了Java脚手架定制

    2020 年,我们公司迎来了业务发展的迅猛期,滋生大量创建工程的需求。总体来说,创建工程面临着以下几个问题。

    杨同学technotes
  • 从零搭建Spring Boot脚手架(2):集成mybatis

    今天继续搭建我们的kono Spring Boot脚手架,上一文集成了一些基础的功能,比如统一返回体、统一异常处理、快速类型转换、参数校验等常用必备功能,并编写...

    码农小胖哥
  • 从零搭建Spring Boot脚手架(5):整合 Mybatis Plus

    在上一文中我根据Mybatis中Mapper的生命周期手动实现了一个简单的通用Mapper功能,但是遗憾的是它缺乏实际生产的检验。因此我选择更加成熟的一个Myb...

    码农小胖哥
  • Spring Boot框架下实现Excel服务端导入导出

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而...

    葡萄城控件
  • 2021升级版微服务教程2—微服务开发环境准备

    2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」

    鹿老师的Java笔记
  • 从零搭建Spring Boot脚手架(2):增加通用的功能

    上一篇说了我要一步步地搭建Spring Boot脚手架,首先会集成Spring MVC并进行定制化以满足日常开发的需要,我们先做一些刚性的需求定制,后续再补充细...

    码农小胖哥
  • 从零搭建Spring Boot脚手架(6):整合Redis作为缓存

    上一文我们整合了Mybatis Plus,今天我们会把缓存也集成进来。缓存是一个系统应用必备的一种功能,除了在减轻数据库的压力之外。还在存储一些短时效的数据场景...

    码农小胖哥
  • 从零搭建Spring Boot脚手架(1):开篇以及技术选型

    目前Spring Boot已经成为主流的Java Web开发框架,熟练掌握Spring Boot并能够根据业务来定制Spring Boot成为一个Java开发者...

    码农小胖哥
  • 从零搭建Spring Boot脚手架(4):手写Mybatis通用Mapper

    今天继续搭建我们的kono Spring Boot脚手架,上一文把国内最流行的ORM框架Mybatis也集成了进去。但是很多时候我们希望有一些开箱即用的通用Ma...

    码农小胖哥
  • 如何开发一个项目脚手架

    创建一个项目通常需要依赖很多的二/三方组件,我们很难记住每个组件的maven坐标,并且有些组件的初始化工作很繁琐,一堆配置项很难记住。如果没有脚手架,每当需要创...

    Java艺术
  • 面试被问为什么使用Spring Boot?答案好像没那么简单

    小小白:在使用Spring框架进行开发的过程中,需要配置很多Spring框架包的依赖,如spring-core、spring-bean、spring-conte...

    JavaQ
  • Spring Cloud Cli 初体验

    SpringBoot CLI 是spring Boot项目的脚手架工具。而本文的Spring Cloud cli则是基于SpringBoot Client的一个...

    pollyduan
  • Spring Cloud Alibaba 实战(2) - 关于Spring Boot你不可不知道的实情

    JavaEdge

扫码关注腾讯云开发者

领取腾讯云代金券