Java如何搭建脚手架(自动生成通用代码),创建自定义的archetype(项目模板)
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); border-top-left-radius: 7px; border-top-right-radius: 7px; color: rgba(255, 255, 255, 1); height: 1.8em; line-height: 1.8em; padding: 5px }
新建项目时,有些配置和包总是相同的,每次添加非常麻烦,并且都是重复性复制粘贴的工作。此时,一个优秀的程序员,会想着如何不做重复性的工作,去提高工作效率。
那什么叫脚手架呢?当搭建一个项目时,一些基础性的工作,如一些共同的组件、服务、配置、测试等在新建项目时就一起生成,形成一个模板。这个就叫做脚手架。
本篇博客包含
①分析整个工程包含的结构
②如何创建脚手架;
③如何使用脚手架
一、项目包含的结构
在我们的项目中,有一个文件,叫read.me,就是用来说明项目的信息,其中就描述了项目的相关信息。
1.项目包结构
每个公司的项目名称、包名称,都有自己公司的标准。所以结构都不相同。并且每个项目的特点也不同。对于小项目或者以模块为项目的微服务,多采用controller,service,dao,entity的分包方式;而对于大的单体应用,更多采用的是以业务命名的包方式。这两种各有优缺点。前者命名的方式,代码量相对较少,代码复用率高,缺点是相对较聚集,耦合度高,拆分不方便。后者业务能够聚聚,方便查找,更清晰,维护方便。本人更倾向于后者。
以本人的为例,如下图所示:

2.各个层的模板类
包括controller、service、mapper等包中的模板类。每个类的命名、注解、返回的响应实体都统一。开发代码时以这些类作为模板,统一风格和标准。
如下图所示:


二、如何创建脚手架
创建步骤:
1.首先创建一个spring-boot的maven项目。
假如需要搭建一个web项目,则需要引入SpringMvc作为基础;假如搭建一个task或者rop项目,则需要引入对于的定时任务包等相关包。(参考上面的包结构)
2.搭建基本的项目完成
将项目运行起来,能够访问并进行单元测试,说明项目基本的没有问题。将项目中的.class,.setting,.project的文件删除调。
3.然后在项目pom中加入以下插件配置。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>3.0.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
注:对于已经存在的项目,也可以将项目做成脚手架,同样先将.class,.setting,.project等不必要的文件删除,再加入插件
4.运行插件
在maven中,双击archetype:create-from-project运行archetype插件,运行的结果在控制台中显示:BUILD SUCCESS 说明构建成功,同时可以看到文件存放的路径。如下图:


6.执行安装命令
在文件的存放路径下(archetype目录中),打开cmd窗口,执行命令:mvn clean install 。如下图所示,直到看到 BUILD SUCCESS,说明执行成功了。


7.执行结果
成功之后,就可以在本地仓库的根目录中看到一个文件:archetype-catalog.xml, 打开该文件,可以看到对应的archetypes结果,并且其中的groupId和artifactId能在仓库中找到,如下图:


8.然后依然在该archetype目录执行命令:mvn archetype:crawl
当看到 BUILD SUCCESS时,说明成功了。
三、如何使用脚手架
在IntelliJ IDEA中使用脚手架
1.添加脚手架
在idea中引入脚手架 点击菜单File -> new -> Project... 如下图所示,选择maven,勾选Create from archetype,点击 Add Archetype按钮,
填写groupId和artifactId、version信息(就是archetype-catalog.xml文件中的信息),点击OK,便添加完成。

2.填写项目名称
点击next,填写项目名称,然后确定,便生成了整个项目结构。
注:包下有文件的才会生成,而空包不会生成。
结果如下图:

若觉得博文不错 请点击推荐,感谢你的支持。
.
Java如何搭建脚手架(自动生成通用代码),创建自定义的archetype(项目模板)的更多相关文章
- ionic + asp.net core webapi + keycloak实现前后端用户认证和自动生成客户端代码
概述 本文使用ionic/angular开发网页前台,asp.net core webapi开发restful service,使用keycloak保护前台页面和后台服务,并且利用open api自动 ...
- python 自动生成C++代码 (代码生成器)
python 代码自动生成的方法 (代码生成器) 遇到的问题 工作中遇到这么一个事,需要写很多C++的底层数据库类,但这些类大同小异,无非是增删改查,如果人工来写代码,既费力又容易出错:而借用pyth ...
- 使用xorm工具,根据数据库自动生成 go 代码
使用xorm工具,根据数据库自动生成 go 代码 引入 使用 golang 操作数据库的同学都会遇到一个问题 -- 根据数据表结构创建对应的 struct 模型.因为 golang 的使用首字母控制可 ...
- 使用mybatis-generator工具自动生成mybatis代码
使用mybatis-generator工具自动生成mybatis代码 步骤如下: 1.引入maven 依赖,在项目pom.xml文件中添加 <plugin> <groupId> ...
- [Dynamic Language] 用Sphinx自动生成python代码注释文档
用Sphinx自动生成python代码注释文档 pip install -U sphinx 安装好了之后,对Python代码的文档,一般使用sphinx-apidoc来自动生成:查看帮助mac-abe ...
- vs code自动生成html代码
在dreamveawer中新建一个htm自动会生成一个标准的html代码,那在vscode得一行一行写吗?太烦了吧,各种关键词搜,哎妈 终于找到了办法,现在这里记录下: 第一步:在空文档中输入! 第二 ...
- 借Adobe XD之力,自动生成Flutter代码
概述 今天,我们来聊聊一个专门为"懒人程序员"准备的工具--Adobe XD.使用它可以快速将原型设计图转换为可执行的Flutter代码, 而由于Flutter自身跨平台的特性,因 ...
- JAVA入门[7]-Mybatis generator(MBG)自动生成mybatis代码
一.新建测试项目 新建Maven项目MybatisDemo2,修改pom.xml引入依赖.dependencies在上节基础上新增 <dependency> <groupId> ...
- 【转】Intellij IDEA 14中使用MyBatis-generator 自动生成MyBatis代码
Intellij IDEA 14 作为Java IDE 神器,接触后发现,非常好用,对它爱不释手,打算离开eclipse和myeclipse,投入Intellij IDEA的怀抱. 然而在使用的过程中 ...
随机推荐
- SpringBoot下Schdule的配置与使用
我们在平常项目开发中,经常会用到周期性定时任务,这个时候使用定时任务就能很方便的实现.在SpringBoot中用得最多的就是Schedule. 一.SpringBoot集成Schedule 1.依赖配 ...
- SQL SERVER 雨量计累计雨量(小时)的统计思路
PLC中定时读取5分钟雨量值,如何将该值统计为小时雨量作为累计?在sql server group by聚合函数,轻松实现该目的. 1.编写思路 数据库中字段依据datetime每五分钟插入一条语句, ...
- Linux[Manjaro] 小新15笔记本AMD ryzen锐龙4800U,在安装系统后出现的随即死机冻屏问题
Linux[Manjaro] 小新15AMD ryzen锐龙4800U,在安装系统后出现的随即死机冻屏问题解决办法 年初尝试将manjaro安装在我的笔记本上就存在这个问题,也一度将我劝退.系统安装在 ...
- 自建简易FaaS平台
近些年来,传统的 IaaS.PaaS 已经无法满足人们对资源调度的需求了.各大云厂商相继开始推出自家的 Serverless 服务.Serverless 顾名思义,它是"无服务器" ...
- LVM磁盘配额
目录 一.LVM概述 1.1.逻辑卷管理 1.2.LVM机制的基本概念 二.LVM管理命令 三.磁盘配额概述 3.1.实现磁盘配额的条件 3.2.Linux磁盘限额的特点 3.3.常用命令及选项 3. ...
- Android NDK/JIN 从入门到精通
1.1 JNI(Java Native Interface) 提供一种Java字节码调用C/C++的解决方案,JNI描述的是一种技术 1.2 NDK(Native Development Kit) A ...
- 从事 Android应用开发4年有余,现在工资7500。很不爽!怎么办?
最近到某论坛看到一个帖子: 坐标北京,在一个公司从事android应用开发4年有余(毕业至今没换过公司).公司利润越来越大,工资却每年长1000,如今才到7500.琢磨着换工作,又不想扔下这四年来逐步 ...
- 《手把手教你》系列技巧篇(十六)-java+ selenium自动化测试-元素定位大法之By xpath下卷(详细教程)
1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. ...
- Docker部署ELK之部署filebeat7.6.0(3)
1. filebeat介绍 Filebeat是用于转发和集中日志数据的轻量级传送工具.Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logsta ...
- Socket通信-客户端
WSADATA wsd; SOCKET sHost; SOCKADDR_IN servAddr; if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0) retu ...