从0到1搭建自己的脚手架(java后端) | 京东云技术团队

news2024/11/25 11:03:10

一、脚手架是什么

脚手架是一种基础设施工具,用于快速生成项目的框架代码和文件结构。它是一种标准化的开发工具,使开发人员能够在项目的早期阶段快速搭建出一个具备基本功能和结构的系统。

二、脚手架的意义

主流的微服务架构体系下很多公司会将原有的单体架构或者繁重的微服务进行拆分。这个时候按照模块(商品、订单、用户、库存、优惠、搜索、管理后台…)、按照领域驱动设计(投保、理赔、支付、保单管理)等进行拆分就需要很多的微服务项目,如果一个一个的去创建微服务其实是在做重复的工作容易出错而且没有意义,浪费人力物力。这个时候基础性的持久层、日志、异常处理、权限控制等在项目创建时一起生成不仅减少了重新创建或部分复制带来的风险而且高效。

三、脚手架的创建

3.1 编写项目模版

首先我们要有一个基础项目的模板,这个模板中集成了开发时所需要的常用配置,你可以自己搭建,或者找一个基础项目如:SpringBoot 项目中已经引入了 MyBatis-Plus, Redis, Logback, Hutool, Swagger-UI 等。或者将公司的架构沉淀出一个基础项目的模板。

springboot模版项目:

3.2 生成脚手架

3.2.1 使用 idea 打开项目模板

使用 IDEA 打开基础项目,查看一下 maven 的配置路径,搭建过程中要保证 maven 路径始终一致,我的 maven 路径如下。

D:/Program Files/apache-maven-3.2.5
D:\Program Files\apache-maven-3.2.5\conf\settings.xml
D:\Program Files\apache-maven-3.2.5\repository

然后运行一下项目,要确保基础项目是正常的。

3.2.2 注意版本号

然后留意一下 pom.xml 文件中的项目 gvn,这是项目的版本号,也与下文生成模板的版本号有关。

org.springframework.boot.demo
spring‐boot‐stage‐demo
0.0.1‐SNAPSHOT

3.2.3 构建脚手架

方式一:打开命令行窗口 Terminal ,正常情况指向的是本项目的目录,如果不是则 cd 到本项目,然后输入:

mvn archetype:create-from-project #从已有的项目中生成archetype.

方式二:当前项目所在文件夹下执行

eg: 项目的跟路径为 D:\spring-staggingcmd下执行
d:
cd D:\spring-stagging
mvn archetype:create-from-project

执行完成后脚手架项目也就创建完成,生成如下所示的结构


注:这里如果生成的是如下所示的结构

解决办法1.调整如图所示的artifactId与module前缀一致

将产生的target目录移动到新的目录,打开gitbash进行如下操作

删除idea的相关文件
rm -rf .idea
find . -name " .iml" -type f -print -exec rm -rf {} ;
删除不需要的实例代码find . -name "xxxMain" -type f -print -exec rm -rf {} ;
eg:将脚手架放到D:\spring-stagging-archetype 目录下,目录下主要存放src和pom文件即可

3.2.4发布脚手架

用idea打开后配置maven

在创建项目的时候也要保证maven的一致否则不能找到对应的脚手架pom

配置distributionManagement后deploy到artifactId仓库
否则创建的时候:Could not find artifact org.springframework.boot.demo:spring-boot-stage-demo-archetype:pom:0.0.1-SNAPSHOT

      
        
          xxx-central
          libs-releases-local
          http://artifactory.66.com/libs-releases-local
        
        
          xxx-snapshots
          libs-snapshot-local
          http://artifactory.66.com/libs-snapshots-local
        
      

pom里的 gav就是以后创建项目时用到的脚手架的gav

org.springframework.boot.demo
  spring-boot-stage-demo-archetype
  0.0.1-SNAPSHOT
  maven-archetype

上传脚手架项目到git代码仓库保存便于以后更新和沉淀。

四、使用脚手架创建新的项目

4.1配置脚手架的gav

4.2填写要创建的目标项目的gav

4.3配置maven

4.4根据新的artifactId生成新的工程

五、参考文档

https://maven.apache.org/archetype/maven-archetype-plugin/

作者:京东健康 马仁喜

来源:京东云开发者社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/596352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS/OpenHarmony应用开发-ArkTS语言基本语法说明

以一个具体的示例来说明ArkTS的基本组成。如下图所示,当开发者点击按钮时,文本内容从“Hello World”变为“Hello ArkUI”。 图1 示例效果图 本示例中,ArkTS的基本组成如下所示。 图2 ArkTS的基本组成 装饰器: 用于装饰类、结构…

impala中group_concat()函数无法对内容进行order by

描述: 使用的是impala数据库,假设有四笔数据,是无序的,业务上要求将其行转列成一行数据,并且里面的数据要按从小到大排序。 过程: 猜测: 数据库Oracle、Mysql、MSsql等支持group_concat中使…

依赖倒置原则:高层代码和底层代码,到底谁该依赖谁?

前言 上一篇,我们讲了 ISP 原则,知道了在设计接口的时候,我们应该设计小接口,不应该让使用者依赖于用不到的方法。 依赖这个词,程序员们都好理解,意思就是,我这段代码用到了谁,我就…

签名支持全球管控AI 三巨头侧漏“求生欲”

又一封“群星云集”警示AI风险的公开信来了,这封信的内容简短但措辞炸裂:减轻 AI 带来的灭绝风险,应该与管控流行病和核战争等其他社会级规模的风险一样,成为一项全球优先事项。 5月30日,这纸原文只有22个单词的声明&…

核心交换机的四种关键技术:链路聚合、冗余、堆叠和热备份,真简单!

你好,这里是网络技术联盟站。 当涉及到核心交换机的关键技术,如链路聚合、冗余、堆叠和热备份时,下面更详细地介绍每个技术的工作原理和优势。 1. 链路聚合 链路聚合是一种技术,用于将多个物理链路组合成一个逻辑链路&#xff0…

详解Java枚举

一、知识点 二、概念 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性。 在Java中,被 enum 关键字修饰的类型就是枚举类型。形式如下: enum Color { RED, GREEN, BLUE }如果枚举不添加任何方法,枚举值默认为从0开始的有…

CSS 选择器的常见用法

前言 CSS在编写代码的时候有很多种样式,和和HTML,JS相似,他们都是运行在浏览器中的,下面就介绍一下CSS选择器的常见用法。 标签选择器使用标签名把页面中所有同名标签都选中类选择器使用.类名的方式对应一组CSS属性id选择器使用 …

小米再度登上《焦点访谈》!中关村论坛展科技风采

5月30日下午,以“开放合作共享未来”为主题的2023中关村论坛展览(科博会)在京圆满落幕。小米作为科技领军企业参展,设立“科技创新、绿色低碳”主题展区。 小米携智能手机、可穿戴设备、智能家居以及全尺寸人形仿生机器人CyberOne…

【ROS】ROS2编程示例:话题订阅-发布-C++版

1、准备 1)安装ROS2 【ROS】Ubuntu22.04安装ROS2(Humble Hawksbill) 2)ROS2命令 【ROS】ROS2命令行工具详解 3)配置工作空间 【ROS】ROS2中的概念和名词解释中第一节:工作空间 workspace 4)…

MySQL-12-SQL优化

一、MySQL体系结构 1.1、体系结构 # 1.2、查询执行流程 参考:https://www.cnblogs.com/xfeiyun/p/15899990.html 1.3、组件说明 管理工具:MySQL服务软件安装后提供的命令连接池:检查本机是否有空闲资源(线程,内存&…

Geoffrey Hinton、姚期智、张钹、Sam Altman等专家共话AI安全与对齐丨2023智源大会议程公开...

6月9日,2023北京智源大会,将邀请AI领域的探索者、实践者、以及关心智能科学的每个人,共同拉开未来舞台的帷幕,你准备好了吗?与会知名嘉宾包括,图灵奖得主Yann LeCun、OpenAI创始人Sam Altman、图灵奖得主Ge…

Linux教程——Linux和UNIX的关系及区别(详解版)

UNIX 与 Linux 之间的关系是一个很有意思的话题。在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初,可以说 UNIX 是操作系统中的"老大哥&…

开始梳理大学课程体系(二)--万字数据结构总结上

数据结构总结 第一章 概述1.1 基本概念和术语1.2 数据结构1. 2.1 逻辑结构1.2.2 存储结构 1.3 数据类型和抽象数据类型1.3.1 数据类型1.3.2 抽象数据类型 1.4 算法和算法分析1.4.1 算法的定义及特性1.4.2 评价算法优劣的基本标准1.4.3 算法的时间复杂度1.4.4 算法的空间复杂度 …

chatgpt赋能python:用Python优化交通

用Python优化交通 作为一种功能强大的编程语言,Python已经被广泛应用于各个领域。交通领域也不例外。在交通领域,Python可以发挥重要作用,帮助优化交通运行,提高安全性和效率。 实时路况预测 Python可以通过机器学习算法来对实…

【Linux】进程与文件系统(详细解析)

文章目录 1.前言(提出问题)2.认识问题3.回顾c文件接口4.学习系统文件IOopen函数第一个参数第二个参数第三个参数函数的返回值 write函数read函数close函数 5.文件描述符 1.前言(提出问题) 在C语言阶段学习文件操作的时候&#xf…

基于PP-OCRv3的车牌检测和识别

本项目基于百度飞桨AI Studio平台进行实现,百度出品的深度学习平台飞桨(PaddlePaddle)是主流深度学习框架中一款完全国产化的产品,与Google TensorFlow、Facebook Pytorch齐名。2016 年飞桨正式开源,是国内首个全面开源…

【SpringMVC】| 域对象共享数据

目录 前期准备 域对象共享数据 一:向request域共享数据(五种方法) 1. 使用ServletAPI向request域对象共享数据(了解) 2. 使用ModelAndView向request域对象共享数据 3. 使用Model向request域对象共享数据 4. 使用…

chatgpt赋能python:Python代码怎么找?这里介绍几种方法

Python代码怎么找?这里介绍几种方法 在编写Python程序的时候,经常会遇到需要查找已有代码的情况。那么,在这里,我们将介绍几种查找Python代码的方法,希望能对大家有所帮助。 使用文本编辑器的查找功能 在大多数文本…

3.场(field)

目录 1.复习 2.引言 3.数量场 1.概念 2.例题 4.矢量场 1.概念 2.例题 5.坐标变换和坐标单位矢 1.坐标变换 2.单位矢 1.复习 2.引言 如果说矢量分析研究的是矢量的时间变化,那么场就是它的空间变化. 场是客观存在的,杨振宁先生在总结20世…

Spring Boot 3.1中如何整合Spring Security和Keycloak

在今年2月14日的时候,Keycloak 团队宣布他们正在弃用大多数 Keycloak 适配器。其中包括Spring Security和Spring Boot的适配器,这意味着今后Keycloak团队将不再提供针对Spring Security和Spring Boot的集成方案。但是,如此强大的Keycloak&…