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的怀抱. 然而在使用的过程中 ...
随机推荐
- oracle Group by 分组查询后,分页
------------恢复内容开始------------ 1.分页查询 select count(*) times,title from menulog group by title order ...
- vue源码解析之observe
一. vue文档中有"由于 JavaScript 的限制,Vue 不能检测以下数组的变动",是否真是由于JavaScript的限制,还是出于其他原因考虑 当你利用索引直接设置一个数 ...
- 硬核万字长文,深入理解 Java 字节码指令(建议收藏)
Java 字节码指令是 JVM 体系中非常难啃的一块硬骨头,我估计有些读者会有这样的疑惑,"Java 字节码难学吗?我能不能学会啊?" 讲良心话,不是我谦虚,一开始学 Java 字 ...
- dhanush
一.信息收集 ip.端口.指纹 目录扫描 查看frp文件 密码破解 失败换一个 https://github.com/truongkma/ctf-tools/blob/master/John/run/ ...
- Hadoop 3.1.1 - Yarn - 使用 CGroups
在 Yarn 上使用 CGroups CGroups 是一种将任务及其子任务聚集和划分进一个垂直的分组的策略,并提供在此结构上的特别的操作.CGroups 是 Linux 内核功能,自内核版本 2.6 ...
- Bugku-域名解析
做题之前了解一下域名解析,域名是为了方便记忆而专门建立的一套地址转换系统,要访问一台互联网上的服务器,最终还必须通过IP地址来实现,域名解析就是将域名重新转换为IP地址的过程.一个域名对应一个IP地址 ...
- 算法竞赛中的常用JAVA API :HashSet 和 TreeSet(转载)
算法竞赛中的常用JAVA API :HashSet 和 TreeSet set set容器的特点是不包含重复元素,也就是说自动去重. HashSet HashSet基于哈希表实现,无序. add(E ...
- Switch User Command in Linux
Switch user command (su) has the following forms: su Switch to , without loading environment variabl ...
- 给 Arm 生态添把火,腾讯 Kona JDK Arm 架构优化实践
前言 Arm 架构以其兼具性能与功耗的特点,在智能终端以及嵌入式领域得到了广泛的使用,不断扩大其影响力.而在 PC 端以及数据中心,之前往往是 x86 架构在其中发挥着主要的作用.最近,随着人工智能. ...
- Longhorn 企业级云原生容器存储解决方案-部署篇
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 云原生分布式块存储解决方案设计架构和概念 安装 Longhorn 可以通过多种方式安装 ...