.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(项目模板)的更多相关文章

  1. ionic + asp.net core webapi + keycloak实现前后端用户认证和自动生成客户端代码

    概述 本文使用ionic/angular开发网页前台,asp.net core webapi开发restful service,使用keycloak保护前台页面和后台服务,并且利用open api自动 ...

  2. python 自动生成C++代码 (代码生成器)

    python 代码自动生成的方法 (代码生成器) 遇到的问题 工作中遇到这么一个事,需要写很多C++的底层数据库类,但这些类大同小异,无非是增删改查,如果人工来写代码,既费力又容易出错:而借用pyth ...

  3. 使用xorm工具,根据数据库自动生成 go 代码

    使用xorm工具,根据数据库自动生成 go 代码 引入 使用 golang 操作数据库的同学都会遇到一个问题 -- 根据数据表结构创建对应的 struct 模型.因为 golang 的使用首字母控制可 ...

  4. 使用mybatis-generator工具自动生成mybatis代码

    使用mybatis-generator工具自动生成mybatis代码 步骤如下: 1.引入maven  依赖,在项目pom.xml文件中添加 <plugin> <groupId> ...

  5. [Dynamic Language] 用Sphinx自动生成python代码注释文档

    用Sphinx自动生成python代码注释文档 pip install -U sphinx 安装好了之后,对Python代码的文档,一般使用sphinx-apidoc来自动生成:查看帮助mac-abe ...

  6. vs code自动生成html代码

    在dreamveawer中新建一个htm自动会生成一个标准的html代码,那在vscode得一行一行写吗?太烦了吧,各种关键词搜,哎妈 终于找到了办法,现在这里记录下: 第一步:在空文档中输入! 第二 ...

  7. 借Adobe XD之力,自动生成Flutter代码

    概述 今天,我们来聊聊一个专门为"懒人程序员"准备的工具--Adobe XD.使用它可以快速将原型设计图转换为可执行的Flutter代码, 而由于Flutter自身跨平台的特性,因 ...

  8. JAVA入门[7]-Mybatis generator(MBG)自动生成mybatis代码

    一.新建测试项目 新建Maven项目MybatisDemo2,修改pom.xml引入依赖.dependencies在上节基础上新增 <dependency> <groupId> ...

  9. 【转】Intellij IDEA 14中使用MyBatis-generator 自动生成MyBatis代码

    Intellij IDEA 14 作为Java IDE 神器,接触后发现,非常好用,对它爱不释手,打算离开eclipse和myeclipse,投入Intellij IDEA的怀抱. 然而在使用的过程中 ...

随机推荐

  1. python开发,注意事项

    提高python代码运行效率 1.使用生成器,节约内存.[一边循环一边计算的机制,称为生成器:generator] 例: .如何创建生成器 1.只要把一个列表生成式的[]改成(),就创建了一个gene ...

  2. 什么是SpringBoot,微服务

    Spring是如何简化Java开发的 为了降低Java开发的复杂性,Spring采用了以下4种关键策略: 1.基于pojo的轻量级和最小侵入性编程:   2.通过IOC,依赖注入(DI)和面向接口实现 ...

  3. 大数据学习(05)——MapReduce/Yarn架构

    Hadoop1.x中的MapReduce MapReduce作为Hadoop最核心的两个组件之一,在1.0版本中就已经存在了.它包含这么几个角色: Client 多数情况下Client的作用就是向服务 ...

  4. 开机时自动启动的AutoHotkey脚本 2019年07月08日19时06分

    ;;; 开机时自动启动的AutoHotkey脚本;; 此脚本修改时间 2019年06月18日20时48分;; 计时器创建代码段 ------------------------------------ ...

  5. 基于Java和Bytemd用120行代码实现一个桌面版Markdown编辑器

    前提 某一天点开掘金的写作界面的时候,发现了内置Markdown编辑器有一个Github的图标,点进去就是一个开源的Markdown编辑器项目bytemd(https://github.com/byt ...

  6. SpringCloud升级之路2020.0.x版-12.UnderTow 简介与内部原理

    本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 在我们的项目中,我 ...

  7. .NetCore+OpenSSL实现Https

    前言 最近,有时间研究了一下HTTPS安全通信的原理,感兴趣的同学可以看下上一篇博文深入理解Https如何保证通信安全 ,随即联想到近段时间开发的.NetCore项目,.NetCore API应用程序 ...

  8. python中两种拷贝目录方法的比较

    首先是用python自己的api: shutil.copytree('./build/tested/doc', './build/tested/build/doc') 优点是改变平台时不需要修改代码, ...

  9. 第7篇-为Java方法创建栈帧

    在 第6篇-Java方法新栈帧的创建 介绍过局部变量表的创建,创建完成后的栈帧状态如下图所示. 各个寄存器的状态如下所示. // %rax寄存器中存储的是返回地址 rax: return addres ...

  10. rabbitMQ批量删除指定的队列

    首先进入到rabbitmq目录下的sbin目录 方法1: ./rabbitmqctl list_queues| grep helloQueue | awk '{print $1}' | xargs - ...