首页 > 编程语言 >从0到1搭建自己的脚手架(java后端) | 京东云技术团队

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

时间:2023-06-01 11:32:56浏览次数:49  
标签:java 项目 spring maven 3.2 脚手架 archetype 京东

一、脚手架是什么

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

二、脚手架的意义

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

三、脚手架的创建

3.1 编写项目模版

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

springboot模版项目:

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

3.2 生成脚手架

3.2.1 使用 idea 打开项目模板

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

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

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,这是项目的版本号,也与下文生成模板的版本号有关。

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

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

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

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


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

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

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

将产生的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

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

配置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

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

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

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

4.1配置脚手架的gav

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

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

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

4.3配置maven

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

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

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

五、参考文档

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

作者:京东健康 马仁喜

来源:京东云开发者社区

标签:java,项目,spring,maven,3.2,脚手架,archetype,京东
From: https://blog.51cto.com/u_15714439/6393064

相关文章

  • java中 & ,&&
    publicclassImoocStudent{publicstaticvoidmain(String[]args)throwsException{if(1>2&&10/0==0)//执行报错,0不能作为分母{System.out.println("******");}if(1>2&10/0==......
  • 基于RxJava2+Retrofit2精心打造的Android基础框架
    XSnow基于RxJava2+Retrofit2精心打造的Android基础框架,包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载、UI模块,基本都是项目中必用功能,每个模块充分解耦,可自由拓展。XSnow,X:未知一切,取其通用之意;Snow:雪,取其纯净之意。该框架通用纯净,只依赖公共核心库。项目依赖:c......
  • Java 一个函数返回两个以上的值
    正常函数只有一个返回值,但我们用数组来做为返回值,这样就可以实现一个函数返回多个值以计算时间差函数为例//获取时间间隔publicstaticString[]getTimeInterval(StringstrStartTime,StringstrStopTime){StringarrStr[]=newString[2];try{......
  • java jdk 8 181下载地址 还是华为给的下载靠谱啊
    https://repo.huaweicloud.com/java/jdk/8u181-b13/  ......
  • Java 获取时间间隔
    使用一个函数获取两种格式的时间差一、时间格式  00:12:50二、总秒数 140//获取时间间隔publicstaticString[]getTimeInterval(StringstrStartTime,StringstrStopTime){StringarrStr[]=newString[2];try{DateFormatdf=......
  • jQuery 是javascript的一个库(常用插件、处理器)
    jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validationjQuery就是javascript的一个库,把我们常用的一些功能进行了封装,方便我们来调用,提高我们的开发效率。极大地简化了JavaScript编程。Javascipt跟jQuery的区别:Javascript是一门编程语言,我们用......
  • 如何在JavaFX中使用CSS
    如何在JavaFX中使用CSSCSS用于定制用户界面的显示样式。JavaFX也可以通过css文件来支持CSS。对于JavaFX中的元素,有的会有默认的规则,我们对这个规则设置CSS样式,就可以修改其关联的元素的显示效果。比如,Label控件关联的规则名是.label,如果我们在CSS文件中加入:.lab......
  • 如何在Java中创建数组列表
    为了在Java中存储动态大小的元素,我们使用了ArrayList。每当添加新元素时,它会自动增加其大小。ArrayList实现Java的List接口和Java的Collection的一部分。由于其功能和灵活性,它被广泛使用。ArrayList的关键点An ArrayList是一个可调整大小的数组,也称为动态数组。它根据新元素增加其......
  • JavaWeb——Tomcat服务器的安装与使用
    今天阿Q带大家了解服务器的概念以及tomcat服务器的安装和使用方法,废话不多说直接上干货。Web开发中的常见概念(1)B/S系统和C/S系统Brower/Server:浏览器、服务器系统-----网站Client/Server:客户端、服务器系统-----QQ、大型游戏(2)web应用服务器供向外部发布web资源的服务器软件......
  • JavaScript原生实现《贪吃蛇》
    概述JavaScript原生实现《贪吃蛇》,每吃掉一个食物,蛇的身体会变长,食物会重新换位置。详细贪吃蛇大家都不陌生吧~简单做一个。一、思路1.让我们的小蛇动起来2.随机生成食物3.每吃掉一个食物,蛇的身体会变长,食物会重新换位置html界面<divclass="face"><!--小蛇移......