您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
首页
博文
课程
大赛
工具
更多
用户中心
开发者社区
>
博文
>
从0到1搭建自己的脚手架(java后端)
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
从0到1搭建自己的脚手架(java后端)
马仁喜122815
2023-06-07
IP归属:北京
20440浏览
#### 一、脚手架是什么 脚手架:快速创建一个基础项目的模版 #### 二、脚手架的意义 主流的微服务架构体系下很多公司会将原有的单体架构或者繁重的微服务进行拆分。这个时候按照模块(商品、订单、用户、库存、优惠、搜索、管理后台..)、按照领域驱动设计(投保、理赔、支付、保单管理)等进行拆分就需要很多的微服务项目,如果一个一个的去创建微服务其实是在做重复的工作容易出错而且没有意义,浪费人力物力。这个时候基础性的持久层、日志、异常处理、权限控制等在项目创建时一起生成不仅减少了重新创建或部分复制带来的风险而且高效。 #### 三、脚手架的创建 3.1、编写项目模版 首先我们要有一个基础项目的模板,这个模板中集成了开发时所需要的常用配置,你可以自己搭建,或者找一个基础项目如:SpringBoot 项目中已经引入了 MyBatis-Plus, Redis, Logback, Hutool, Swagger-UI 等。或者将公司的架构沉淀出一个基础项目的模板。 springboot模版项目: ![](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-05-24-14-24cVyjEDYvvMff25F.png) 3.2、生成脚手架 3.2.1 使用 idea 打开项目模板 使用 IDEA 打开基础项目,查看一下 maven 的配置路径,搭建过程中要保证 maven 路径始终一致,我的 maven 路径如下。 ![](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-05-24-14-25H9tEfUm7E80T25ZI.png) ``` 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,这是项目的版本号,也与下文生成模板的版本号有关。 ![](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-05-24-14-26fSBsjHntccF2xex.png) ``` <groupId>org.springframework.boot.demo</groupId> <artifactId>spring‐boot‐stage‐demo</artifactId> <version>0.0.1‐SNAPSHOT</version> ``` 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 执行完成后脚手架项目也就创建完成,生成如下所示的结构 ![](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-05-24-14-28F28PCskX26ddy5PMJ.png) <strong>注:这里如果生成的是如下所示的结构</strong> 解决办法1.调整如图所示的artifactId与module前缀一致 ![](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-05-24-14-29VTB29vUY65g0LRzF.png) 将产生的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 ![](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-05-24-14-30mSRsAgyXY5nSZ2F.png) 配置distributionManagement后deploy到artifactId仓库 否则创建的时候:Could not find artifact org.springframework.boot.demo:spring-boot-stage-demo-archetype:pom:0.0.1-SNAPSHOT ``` <distributionManagement> <repository> <id>xxx-central</id> <name>libs-releases-local</name> <url>http://artifactory.66.com/libs-releases-local</url> </repository> <snapshotRepository> <id>xxx-snapshots</id> <name>libs-snapshot-local</name> <url>http://artifactory.66.com/libs-snapshots-local</url> </snapshotRepository> </distributionManagement> ``` pom里的 gav就是以后创建项目时用到的脚手架的gav ``` <groupId>org.springframework.boot.demo</groupId> <artifactId>spring-boot-stage-demo-archetype</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>maven-archetype</packaging> ``` ![](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-05-24-14-32M0In8YugkNr24aim.png) 上传脚手架项目到git代码仓库保存便于以后更新和沉淀。 #### 四、使用脚手架创建新的项目 4.1配置脚手架的gav ![](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-05-24-14-33BRoY24lFOkN9TOmL.png) 4.2填写要创建的目标项目的gav ![](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-05-24-14-34beFMrZvxAlMVNkZ.png) 4.3配置maven ![](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-05-24-14-34SAPzAscsoljDI57f.png) 4.4根据新的artifactId生成新的工程 ![](https://s3.cn-north-1.jdcloud-oss.com/shendengbucket1/2023-05-24-14-359MXpRZNe7WhUlvc.png) ### 五、参考文档 https://maven.apache.org/archetype/maven-archetype-plugin/ ### 六、[前端从0到1搭建自己的脚手架传送门](http://xingyun.jd.com/shendeng/article/detail/10744?forumId=27&jdme_router=jdme%3A%2F%2Fweb%2F202206081297%3Furl%3Dhttp%3A%2F%2Fsd.jd.com%2Farticle%2F10744) ### 七、[其他实现方式](https://cf.jd.com/pages/viewpage.action?pageId=514571213) \| [其他实现方式](http://xingyun.jd.com/shendeng/article/detail/12292?forumId=undefined&jdme_router=jdme%3A%2F%2Fweb%2F202206081297%3Furl%3Dhttp%3A%2F%2Fsd.jd.com%2Farticle%2F12292)
上一篇:初探webAssembly
下一篇:Mybatis的parameterType造成线程阻塞问题分析
马仁喜122815
文章数
7
阅读量
2630
作者其他文章
01
Intellij IDEA 插件开发
如有疏漏欢迎指正,如想深入了解欢迎联系探讨写在前面:很多idea插件文档更多的是介绍如何创建一个简单的idea插件文章的意义:开发环境、demo、生态组件、添加依赖包、源码解读、网络请求、渲染数据、页面交互等介绍,是一篇能够满足基本的插件开发工程要求的文章。一、简介IntelliJ IDEA 与 IntelliJ PlatformIntelliJ IDEA 简称 IDEA,是 Jetbrains
01
流程编排及可视化
写在前面这里只介绍liteflow的简单基础使用以及作者对liteflow进行可视化扩展的相关阐述一、背景及意义背景:对于拥有复杂业务逻辑的系统承载着核心业务逻辑,这些核心业务逻辑涉及内部逻辑运算,缓存操作,持久化操作,外部资源调取,内部其他系统RPC调用等等。项目几经易手,维护的成本就会越来越高。各种硬代码判断,分支条件越来越多。代码的抽象,复用率也越来越低,各个模块之间的耦合度很高。一小段逻辑
01
从0到1搭建自己的脚手架(java后端)
一、脚手架是什么脚手架:快速创建一个基础项目的模版二、脚手架的意义主流的微服务架构体系下很多公司会将原有的单体架构或者繁重的微服务进行拆分。这个时候按照模块(商品、订单、用户、库存、优惠、搜索、管理后台..)、按照领域驱动设计(投保、理赔、支付、保单管理)等进行拆分就需要很多的微服务项目,如果一个一个的去创建微服务其实是在做重复的工作容易出错而且没有意义,浪费人力物力。这个时候基础性的持久层、日志
01
ASM字节码操作类库(打开java语言世界通往字节码世界的大门)
前言:授人以鱼不如授人以渔,应用asm的文章有很多,简单demo的也很多,那么ASM都具备哪些能力呢?如何去学习编写ASM代码呢?什么样的情景需要用到ASM呢?让我们带着这些问题阅读这篇文章吧。这里由于篇幅限制做了删减(第六部分TreeApi和CoreApi的比较、核心API类的介绍等),如果有兴趣可以联系作者进行交流,个人认为核心在于第五部分如何查看一个想写的类的ASM代码如何写,以及全面了解A
马仁喜122815
文章数
7
阅读量
2630
作者其他文章
01
Intellij IDEA 插件开发
01
流程编排及可视化
01
ASM字节码操作类库(打开java语言世界通往字节码世界的大门)
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号