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

  1. 在命令行使用 mvn archetype:generate 命令创建一个基础项目

  2. 将这个基础项目改造成我们需要的模板形式

    image.png

  3. 使用 mvn archetype:create-from-project 命令将这个基础项目转换成模板。这个命令将在 target/generated-sources 目录下生成一个名为 archetype 的项目。

    image.png

  4. 使用 idea 打开 target/generated-sources/archetype 项目,执行 mvn clean install 命令将项目安装到本地

    image.png

  5. 在命令行使用 mvn archetype:generate 命令,选择我们自定义的模板生成项目

    image.png

    填写项目的基本信息

    image.png

    如果大家不熟悉使用命令行,可以直接在 idea 中使用模板创建项目

    image.png

    不过这种方式不能选择模板,需要手动填写模板信息比较麻烦,大家可根据自身情况选择方案。

  6. 项目生成了,但是生成的项目存在一些额外的东西,我们先手动处理一下

    image.png

  7. 打开项目,查看项目的工程结构

    image.png

三、定制 Archetype 模板

刚才的模板中生成了额外的 .idea 目录,我们并不需要在模板中创建这个目录。此时,我们需要定制这个模板。我们可以打开之前生成的 archetype 项目。

archetype 项目中删掉我们不需要的模板和配置。

image.png

对该项目重新执行 mvn install 命令安装模板,之后使用模板创建的项目就不会有这个多余的目录了。

四、手动创建 Archetype 模板项目

我们还可以手动搭建一个 Archetype 模板项目。

  1. 新建一个 maven 项目

  2. 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>
    
  3. 搭建工程结构

    image.png

  4. 模板文件配置好之后,使用 mvn install 命令将模板安装到本地库

    image.png

五、FAQ

5.1 如何删除自定义的模板

想要删除自定义的模板,非常简单。按如下步骤即可:

  1. 到本地库删除安装的项目即可。
  2. 执行 mvn archetype:crawl 命令,更新缓存

5.2 是否可以在模板中使用空文件夹

生成模板时并不支持空文件夹,如果遇到空文件夹在生成时会被忽略。如果想要目录,但是目录中又不知道放什么,可以放一个占位文件,例如创建一个名称为 .keep 的空文件。

六、小结

自定义 Maven Archetype 项目模板是提高开发效率和一致性的强大工具。通过遵循上述最佳实践,开发人员可以创建灵活、简洁且易于维护的项目模板,从而显著减少新项目的设置时间并提高开发效率。

推荐阅读

  1. 构建安全稳定的应用:Spring Security 实用指南
  2. 深入探究 Spring Boot Starter:从概念到实践
  3. 深入理解 Java 中的 volatile 关键字
  4. Spring 三级缓存
  5. 深入了解 MyBatis 插件:定制化你的持久层框架

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/40740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

调用asyncio.to_thread后上下文依然一致吗

使用Python的asyncio时&#xff0c;可以把一个同步的函数放到线程池中执行从而避免这个函数阻塞asyncio自身的事件循环。比如可以把requests库的请求放进去 async def to_thread_do_request(url):return await asyncio.to_thread(requests.get, url)这个to_thread_do_request方…

14-20 Vision Transformer用AI的画笔描绘新世界

概述 毫无疑问,目前最受关注且不断发展的最重要的主题之一是使用人工智能生成图像、视频和文本。大型语言模型 (LLM) 已展示出其在文本生成方面的卓越能力。它们在文本生成方面的许多问题已得到解决。然而,LLM 面临的一个主要挑战是它们有时会产生幻觉反应。 最近推出的新模…

分布式计算、异构计算与算力共享

目录 算力 算力共享的技术支撑 云计算技术 边缘计算技术 区块链技术 分布式计算、异构计算与算力共享 分布式计算:计算力的“集团军作战” 异构计算:计算力的“多兵种协同” 算力共享:计算力的“共享经济” 深入融合,共创计算新纪元 算力共享对科研领域的影响 …

openmetadata1.3.1 自定义连接器 开发教程

openmetadata自定义连接器开发教程 一、开发通用自定义连接器教程 官网教程链接&#xff1a; 1.https://docs.open-metadata.org/v1.3.x/connectors/custom-connectors 2.https://github.com/open-metadata/openmetadata-demo/tree/main/custom-connector &#xff08;一&…

Matplotlib 文本

可以使用 xlabel、ylabel、text向图中添加文本 mu, sigma 100, 15 x mu sigma * np.random.randn(10000)# the histogram of the data n, bins, patches plt.hist(x, 50, densityTrue, facecolorg, alpha0.75)plt.xlabel(Smarts) plt.ylabel(Probability) plt.title(Histo…

Qt读取ini格式配置文件的类设计

目录 1.引言 2.QSettings 2.1.功能特点 2.2.基本用法 3.读取ini文件配置通用类设计 3.1.设计要点 3.2.完整实现 3.3.调用方法 4.总结 1.引言 在编写应用程序的时&#xff0c;有些参数需要用户配置&#xff0c;那么这些参数就涉及到存储了&#xff0c;单从存储来讲&…

git 还原被删除的分支

在多人项目开发中&#xff0c;有一次碰到忘记合并到master分支了&#xff0c;直接就把开发分支给删除了&#xff0c;现在记录下怎么还原被删除的分支 必须保证删除的分支之前已经被推送到了远程仓库 # 找出被删除分支的最后一个提交的哈希值 git reflog show# 找到提交哈希值…

2024/07/04

1、梳理笔记(原创) 2、终端输入一个日期&#xff0c;判断是这一年的第几天 scanf("%d-%d-%d",&y,&m,&d); 闰年2月29天&#xff0c;平年2月28天 #include<stdio.h> int main(int argc, char const *argv[]) {int y0,m0,d0;printf("please ente…

析构函数和拷贝构造函数

文章目录 析构函数1.析构函数的定义&#xff1a;2.析构函数的语法&#xff1a;3.析构函数的特性&#xff1a; 拷贝构造函数1.拷贝构造函数的定义&#xff1a;2.拷贝构造函数的语法3.拷贝构造函数的特性(1)拷贝构造函数是构造函数的一个重载形式**(这个其实也很好理解&#xff0…

鸿蒙开发设备管理:【@ohos.thermal (热管理)】

热管理 该模块提供热管理相关的接口&#xff0c;包括热档位查询及注册回调等功能。 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shi…

如何实现图片垂直旋转90度的问题

非常简单的问题&#xff0c;一串代码就可以解决。复制修改一下就可以直接使用&#xff0c;一个简单的小demo。写项目的时候需要写的功能&#xff0c;不到二十行代码就可以实现。 <html> <head><title>旋转图片</title><meta http-equiv"Conte…

Land survey boundary report (template)

Land survey boundary report (template) 土地勘测定界报告&#xff08;模板&#xff09;.doc

【高校科研前沿】南京地理与湖泊研究所博士后夏凡为第一作者在环境科学与水资源领域Top期刊发文:钙对云南洱海溶解有机质与浮游细菌相互作用的调控作用

文章简介 论文名称&#xff1a;Calcium regulates the interactions between dissolved organic matter and planktonic bacteria in Erhai Lake, Yunnan Province, China 第一作者及单位&#xff1a;夏凡&#xff08;博士后|中国科学院南京地理与湖泊研究所&#xff09; 通讯…

Git指令

一 参考&#xff1a;https://zhuanlan.zhihu.com/p/389814854 1.clone远程仓库 git clone https://git.xiaojukeji.com/falcon-mg/dagger.git 2.增加当前子目录下所有更改过的文件至index git add . 3.提交并备注‘xxx’ git commit -m ‘xxx’ 4.显示本地分支 git branch 5.显…

【pytorch13】激活函数及梯度

什么是激活函数 计算机科学家借鉴生物的神经元机制发明了计算机上的模型&#xff0c;这个模型与生物的神经元非常类似 激活的意思就是z变量要大于0&#xff0c;这一个节点才会激活&#xff0c;否则就会处于睡眠状态不会输出电平值 该激活函数在z0处不可导&#xff0c;因此不能…

Asp .Net Core 系列:基于 Castle DynamicProxy + Autofac 实践 AOP 以及实现事务、用户填充功能

文章目录 什么是 AOP &#xff1f;.Net Core 中 有哪些 AOP 框架&#xff1f;基于 Castle DynamicProxy 实现 AOPIOC中使用 Castle DynamicProxy实现事务管理实现用户自动填充 什么是 AOP &#xff1f; AOP&#xff08;Aspect-Oriented Programming&#xff0c;面向切面编程&a…

OpenCV——把YOLO格式的图片目标截图,并按目标类别保存

import os import cv2def get_class_folder(catagetory,class_id, base_folder):# 根据类别ID创建文件夹路径class_folder os.path.join(base_folder, catagetory[int(class_id)])if not os.path.exists(class_folder):os.makedirs(class_folder)return class_folderdef crop_…

VPN是什么?

VPN&#xff0c;全称Virtual Private Network&#xff0c;即“虚拟私人网络”&#xff0c;是一种在公共网络&#xff08;如互联网&#xff09;上建立加密、安全的连接通道的技术。简单来说&#xff0c;VPN就像是一条在公共道路上铺设的“秘密隧道”&#xff0c;通过这条隧道传输…

图像的反转

图像颜色的反转一般分为两种&#xff1a;一种是灰度图片的颜色反转&#xff0c;另一种是彩色图像的颜色反转。 本节使用的原图如下&#xff1a; 1.1 灰度图像颜色反转 灰度图像每个像素点只有一个像素值来表示&#xff0c;色彩范围在0-255之间&#xff0c;反转方法255-当前像…

信创产业政策,信创测试方面

信创产业的政策支持主要体现在多个方面&#xff0c;这些政策旨在推动产业的快速发展&#xff0c;加强自主创新能力&#xff0c;保障国家信息安全&#xff0c;以及促进产业结构的优化升级。 首先&#xff0c;政府通过财政支持、税收优惠等方式&#xff0c;加大对信创产业的资金…