Maven Archetype 自定义项目模板:高效开发的最佳实践
文章目录
- 前言
- 一、Maven Archetype
- 二、创建自定义 Maven Archetype
- 三、定制 Archetype 模板
- 四、手动创建 Archetype 模板项目
- 五、FAQ
- 5.1 如何删除自定义的模板
- 5.2 是否可以在模板中使用空文件夹
- 六、小结
- 推荐阅读
前言
在软件开发中,标准化和快速初始化项目结构能够显著提升开发效率。Maven Archetype 插件提供了创建自定义项目骨架模板的功能,使我们能够轻松生成预定义结构的项目。本文将详细介绍如何创建一个自定义的项目模板,从而提高日常的开发效率。
一、Maven Archetype
Maven Archetype 是一种用于生成项目结构的模板,可以帮助开发者快速创建一个预定义的项目骨架。Maven 自带了一些常见的 Archetype 模板,如 maven-archetype-quickstart、maven-archetype-webapp 等,但在实际开发中,我们可能需要根据团队的标准或个人喜好创建自定义的 Archetype。
二、创建自定义 Maven Archetype
-
在命令行使用
mvn archetype:generate
命令创建一个基础项目 -
将这个基础项目改造成我们需要的模板形式
-
使用
mvn archetype:create-from-project
命令将这个基础项目转换成模板。这个命令将在target/generated-sources
目录下生成一个名为 archetype 的项目。 -
使用
idea
打开target/generated-sources/archetype
项目,执行mvn clean install
命令将项目安装到本地 -
在命令行使用
mvn archetype:generate
命令,选择我们自定义的模板生成项目填写项目的基本信息
如果大家不熟悉使用命令行,可以直接在
idea
中使用模板创建项目不过这种方式不能选择模板,需要手动填写模板信息比较麻烦,大家可根据自身情况选择方案。
-
项目生成了,但是生成的项目存在一些额外的东西,我们先手动处理一下
-
打开项目,查看项目的工程结构
三、定制 Archetype 模板
刚才的模板中生成了额外的 .idea
目录,我们并不需要在模板中创建这个目录。此时,我们需要定制这个模板。我们可以打开之前生成的 archetype
项目。
在 archetype
项目中删掉我们不需要的模板和配置。
对该项目重新执行 mvn install
命令安装模板,之后使用模板创建的项目就不会有这个多余的目录了。
四、手动创建 Archetype 模板项目
我们还可以手动搭建一个 Archetype 模板项目。
-
新建一个 maven 项目
-
pom 文件中引入项目依赖
<!-- XML 文件的声明,指定了使用 XML 1.0 版本和 UTF-8 编码 --> <?xml version="1.0" encoding="UTF-8"?> <!-- 定义了 project 元素及其命名空间 --> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>spring-boot-template-archetype</artifactId><version>1.0.0</version><!-- 项目的打包类型,这里是 maven-archetype,表示这是一个 Maven 原型项目 --><packaging>maven-archetype</packaging><!-- 项目的名称 --><name>spring-boot-template-archetype</name><build><extensions><extension><groupId>org.apache.maven.archetype</groupId><artifactId>archetype-packaging</artifactId><version>3.2.1</version></extension></extensions><pluginManagement><plugins><plugin><artifactId>maven-archetype-plugin</artifactId><version>3.2.1</version></plugin></plugins></pluginManagement></build> </project>
-
搭建工程结构
-
模板文件配置好之后,使用
mvn install
命令将模板安装到本地库
五、FAQ
5.1 如何删除自定义的模板
想要删除自定义的模板,非常简单。按如下步骤即可:
- 到本地库删除安装的项目即可。
- 执行
mvn archetype:crawl
命令,更新缓存
5.2 是否可以在模板中使用空文件夹
生成模板时并不支持空文件夹,如果遇到空文件夹在生成时会被忽略。如果想要目录,但是目录中又不知道放什么,可以放一个占位文件,例如创建一个名称为 .keep
的空文件。
六、小结
自定义 Maven Archetype 项目模板是提高开发效率和一致性的强大工具。通过遵循上述最佳实践,开发人员可以创建灵活、简洁且易于维护的项目模板,从而显著减少新项目的设置时间并提高开发效率。
推荐阅读
- 构建安全稳定的应用:Spring Security 实用指南
- 深入探究 Spring Boot Starter:从概念到实践
- 深入理解 Java 中的 volatile 关键字
- Spring 三级缓存
- 深入了解 MyBatis 插件:定制化你的持久层框架
相关文章:

Maven Archetype 自定义项目模板:高效开发的最佳实践
文章目录 前言一、Maven Archetype二、创建自定义 Maven Archetype三、定制 Archetype 模板四、手动创建 Archetype 模板项目五、FAQ5.1 如何删除自定义的模板5.2 是否可以在模板中使用空文件夹 六、小结推荐阅读 前言 在软件开发中,标准化和快速初始化项目结构能够…...

vue的ESLint 4格缩进 笔记
https://chatgpt.com/share/738c8560-5271-45c4-9de0-511fad862109 一,代码4格缩进设置 .eslintrc.js文件 module.exports { "rules": { "indent": ["error", 4] } }; 自动修复命令 npx eslint --fix "src/**/*.{…...

【前端项目笔记】8 订单管理
订单管理 效果展示: 在开发功能之前先创建分支order cls 清屏 git branch 查看所有分支(*代表当前分支) git checkout -b order 新建分支order git push -u origin order 将本地的当前分支提交到云端仓库origin中命名为order 通过路由方式…...

构建Yarn依赖树:深入解析与实践指南
构建Yarn依赖树:深入解析与实践指南 在现代JavaScript开发中,依赖管理是项目成功的关键。Yarn,作为Node.js生态系统中一个强大的包管理器,以其快速、可靠和安全的特性而闻名。本文将深入探讨Yarn如何构建依赖树,并提供…...

社区活动|FlowUs知识库的发展|先进技术的落地应用|下一代生产力工具你用了吗
在当今快速发展的数字化时代,技术的进步不断推动着工作方式和知识管理的革新。FlowUs,作为一款前沿的知识管理和协作平台,正站在这一变革的浪潮之巅,引领着智能工作的新潮流。 智能化的智能学习引导工具 FlowUs不仅仅是一个工具&…...

Python基础语法(与C++对比)(持续更新ing)
代码块 Python在统一缩进体系内,为同一代码块C{...}内部的为同一代码块 注释 Python 单行注释:#... 多行注释:... C 单行注释://... 多行注释: /*...*/ 数据类型 1. Python数据类型 Python中支持数字之间使用下划线 _ 分割…...

LeetCode-Leetcode 1120:子树的最大平均值
LeetCode-Leetcode 1120:子树的最大平均值 题目描述:解题思路一:递归解题思路二:0解题思路三:0 题目描述: 给你一棵二叉树的根节点 root,找出这棵树的 每一棵 子树的 平均值 中的 最大 值。 子…...

AI在软件开发中的角色:助手还是取代者?
目录 前言 一、AI工具现状:高效助手的崛起 二、AI对开发者的影响:新技能与竞争力的重塑 三、AI开发的未来:共生而非取代 写在最后 前言 随着科技的飞速发展,生成式人工智能(AIGC)在软件开发领域的应用日…...

jboss 7.2
链接: https://pan.baidu.com/s/19PSAy-Wy8DjcUMy94eqWnw 提取码: rgxf 复制这段内容后打开百度网盘手机App,操作更方便哦 --来自百度网盘超级会员v3的分享链接: https://pan.baidu.com/s/19PSAy-Wy8DjcUMy94eqWnw 提取码: rgxf 复制这段内容后打开百度网盘手机App…...

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【密钥生成介绍及算法规格】
密钥生成介绍及算法规格 当业务需要使用HUKS生成随机密钥,并由HUKS进行安全保存时,可以调用HUKS的接口生成密钥。 注意: 密钥别名中禁止包含个人数据等敏感信息。 开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harm…...

电气-伺服(4)CANopen
一、CAN Controller Area Network ,控制器局域网,80年的德国Bosch的一家公司研发可以测量仪器直接的实时数据交换而开发的一款串行通信协议。 CAN发展历史 二、CAN 的osi 模型 CAN特性: CAN 的数据帧 三、CANopen 什么是CANopen CANopen 的网络模型 …...

JavaFx基础知识
1.Stage 舞台 如此这样的一个框框,舞台只是这个框框,并不管里面的内容 public void start(Stage primaryStage) throws Exception {primaryStage.setScene(new Scene(new Group()));primaryStage.getIcons().add(new Image("/icon/img.png"))…...

学会python——用python制作一个登录和注册窗口(python实例十八)
目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.登录和注册窗口 3.1 代码构思 3.2 代码实例 3.3 运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读…...

Vue3+Element-plus的表单重置
作用:简化代码,重置表单数据 1.创建表单,绑定表单数据对象model,并且每一表单需要绑定prop <el-button type"primary" click"Formreset">重置</el-button> <el-form :inline"true" :model"fromModel" ref"form&q…...

pytorch中的contiguous()
官方文档:https://pytorch.org/docs/stable/generated/torch.Tensor.contiguous.html 其描述contiguous为: Returns a contiguous in memory tensor containing the same data as self tensor. If self tensor is already in the specified memory forma…...

Windows系统安装分布式搜索和分析引擎Elasticsearch与远程访问详细教程
文章目录 前言系统环境1. Windows 安装Elasticsearch2. 本地访问Elasticsearch3. Windows 安装 Cpolar4. 创建Elasticsearch公网访问地址5. 远程访问Elasticsearch6. 设置固定二级子域名 前言 本文主要介绍如何在Windows系统安装分布式搜索和分析引擎Elasticsearch,…...

界面材料知识
界面材料是用于填充芯片和散热器之间的空隙,将低导热系数的空气挤出,换成较高导热系数的材料,以提高芯片散热能力。参考下图 图片来源网上 热阻是衡量界面材料性能最终的参数,其中与热阻有关的有: 1、导热系数&#x…...

【Git】远程仓库操作
创建远程仓库 在官网进行注册登录:Gitee或Github 进入后点击新建仓库,默认选项创建即可 **仓库创建完成后可以看到SSH的仓库地址:gitgitee.com:username/test.git**或gitgithub.com:Toukensan/test.git 配置SSH公钥 在本地通过命令行创建…...

clonezilla(再生龙)克隆物理机linux系统,然后再去另一台电脑安装
前言: 总共需要2个u盘,一个装再生龙系统,一个是使用再生龙把硬盘备份到另一个盘里面,恢复的时候,先使用再生龙引导,然后再插上盘进行复制 1.制作启动u盘 1.1下载再生龙Clonezilla 下載 1.2下载UltraISO(https://cn.ultraiso.net/uiso9_cn.exe) 1.3 打开UltraISO,选择co…...

短视频电商源码的优势及软件架构解析
短视频电商源码是目前电商行业中非常火热的一个新兴领域,它通过短视频内容和电商商品的结合,为用户提供了一种新的购物体验。下面将介绍短视频电商源码的优势以及软件架构。 首先,短视频电商源码具有以下几个优势: 1、创新的购物体…...

Git使用[推送大于100M的文件后解救办法]
推送大于100M的文件后解救办法 本文摘录于:https://blog.csdn.net/u012150602/article/details/122687435只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 当有文件大于100M的时候在提交的时候没有问题,但是在push的似乎就不行…...

RClone挂载有阿里云的AList
转自个人博客:https://www.jjy2023.cn/2024/05/23/rclone%e6%8c%82%e8%bd%bd%e6%9c%89%e9%98%bf%e9%87%8c%e4%ba%91%e7%9a%84alist-md/ RClone挂载一般的AList可以直接使用mount命令,但是阿里云需要使用指定头部Referer:https://www.aliyundrive.com/ &a…...

[ruby on rails]rails6.0升级6.1
1.准备工作 在开始升级过程之前,我们有一些建议的准备工作。 升级的时候,最好一个版本一个版本升级,比如6.0到6.1再到7.0,不要一次从6.0到7.0至少80%的测试覆盖率,测试真的很重要,能确保升级快速完成。本…...

大模型日报 2024-07-04
大模型日报 2024-07-04 一、大模型资讯 大厂高管转战 AI 创业盘点:超 25 人,覆盖全产业链,AI 应用最热门 涉及多家互联网大厂高管加入生成式 AI 创业,涵盖多个领域及融资情况。 腾讯云发布自研大数据高性能计算引擎 Meson 软硬一体…...

技术成神之路:设计模式(一)单例模式
在软件设计中,有时我们希望某个类的实例始终是唯一的,即无论在何处访问这个类,都能够得到同一个实例。单例模式(Singleton Pattern)就是为了解决这个问题而产生的。单例模式确保一个类只有一个实例,并提供一…...

四、(3)补充beautifulsoup、re正则表达式、标签解析
四、(3)补充beautifulsoup、re正则表达式、标签解析 beautifulsoupre正则表达式正则提取标签解析 beautifulsoup 补充关于解析的知识 还需要看爬虫课件 如何定位文本或者标签,是整个爬虫中非常重要的能力 无论find_all(ÿ…...

Vscode快捷键崩溃
Vscode快捷键崩溃 Linux虚拟机下使用vscode写代码【ctrlA,CtrlC,CtrlV】等快捷键都不能使用,还会出现“NO text insert“等抽象的指令,问题就是不知道什么时候装了一个VIM插件,让他滚出电脑》》》...

Spring Boot中的开发工具与插件推荐
Spring Boot中的开发工具与插件推荐 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来聊聊Spring Boot中的开发工具与插件推荐。Spring Boot作为一种简…...

qt6 获取百度地图(一)
需求分析: 要获取一个地图, 需要ip 需要根据ip查询经纬度 根据经纬度查询地图 另外一条线是根据输入的地址 查询ip 根据查询到的ip查地图‘ 最后,要渲染地图 上面这这些动作,要进行http查询: 为此要有三个QNet…...