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.mfbz.cn/a/772268.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是JSON ,ajax和json关系

一. JSON 1 JSON概述 JavaScript对象文本表示形式&#xff08;JavaScript Object Notation : js对象简写) json是js对象 json是目前 前后端数据交互的主要格式之一 * java对象表示形式User user new User();user.setUsername("后羿");user.setAge(23);user.setSex…

开发国际短剧系统的策略解析

一、明确项目目标和需求 1、功能需求&#xff1a;确定系统应具备的基本功能&#xff0c;如用户注册、登录、浏览短剧、评论、分享、个性化推荐等。 2、性能需求&#xff1a;确保系统能够承受高并发访问&#xff0c;保证视频流畅播放&#xff0c;减少卡顿和延迟。 3、跨文化传播…

中序遍历的两种实现——二叉树专题复习

递归实现&#xff1a; /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right)…

【算法】(C语言):堆排序

堆&#xff08;二叉树的应用&#xff09;&#xff1a; 完全二叉树。最大堆&#xff1a;每个节点比子树所有节点的数值都大&#xff0c;根节点是最大值。父子索引号关系&#xff08;根节点为0&#xff09;&#xff1a;&#xff08;向上&#xff09;子节点x&#xff0c;父节点(x…

命令行升级ubuntu版本过程中出现的grub问题 解决

1、问题描述 使用命令行升级ubuntu18到20版本后&#xff0c;系统提示重启&#xff0c;使用reboot命令重启后&#xff0c;不显示服务器ip&#xff0c;或是显示但无法ssh远程连接服务器了&#xff0c;使用屏幕连接服务器后发现出现grub问题。 2、问题经过 命令行输入如下升级u…

【虚拟机】虚拟机网络无法访问问题【已解决】

【虚拟机】虚拟机无法上网问题【已解决】 问题探究解决方法法1&#xff1a;查看相关“网络服务”是否处于正常启动状态法2&#xff1a;重启网络法3&#xff1a;重新安装VMWare法4&#xff1a;使用NAT模式&#xff0c;每次打开win7都没连上网的解决办法 问题探究 安装了很多个虚…

Objection 对命令的批量操作

假定现在需要对好多不同的类进行批量hook&#xff0c;逐个hook非常繁琐&#xff0c;那么可以要将这些hook的类放到一个文件里&#xff0c;并且在这些类的前面加上hook命令&#xff0c;内容如下 使用如下命令执行该文件中的命令 objection -g 测试 explore -c d:/hookData/toHoo…

如何从腾讯云迁移到AWS

随着跨境出海潮不断扩大&#xff0c;企业越来越意识到将工作负载迁移到海外节点的必要性&#xff0c;以获取更多功能、灵活性和性能。然而&#xff0c;顺利迁移业务主机并确保业务稳定访问是一项具有挑战性的任务。在此挑战中&#xff0c;借助AWS迁移工具和迁移流程的强大支持&…

docker 安装 禅道

docker pull hub.zentao.net/app/zentao:20.1.1 sudo docker network create --subnet172.172.172.0/24 zentaonet 使用 8087端口号访问 使用禅道mysql 映射到3307 sudo docker run \ --name zentao2 \ -p 8087:80 \ -p 3307:3306 \ --networkzentaonet \ --ip 172.172.172.…

WIN32核心编程 - 进程操作(一) 进程基础 - 创建进程 - 进程句柄

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 进程基础 进程的定义与概念 进程的组成 创建进程 可执行文件 CreateProces 执行流程 GetStartupInfo 进程终止 进程句柄 创建进程 打开进程 进程提权 内核模拟 回溯对象 自身进…

有哪些好用的eHR人事系统?国内外HR软件选型指南分享

在人力资源管理信息化这个问题上&#xff0c;不同行业的企业对人力资源管理软件的需求侧重点不一样&#xff0c;并且通常企业规模决定了企业需求的强烈程度&#xff0c;以及能花在这个软件采购上的预算。 首先需要对公司需要人力资源软件的目的和基本需求加以明确。你为什么想用…

软件测试必问必背面试题

01 软件测试理论部分 1.1 测试概念 1. 请你分别介绍一下单元测试、集成测试、系统测试、验收测试、回归测试 单元测试&#xff1a;完成最小的软件设计单元&#xff08;模块&#xff09;的验证工作&#xff0c;目标是确保模块被正确的编码集成测试&#xff1a;通过测试发现与…

【Linux】探索网络编程:TCP/UDP协议解析与Socket应用实例

文章目录 前言&#xff1a;1. 预备知识1.1 理解源IP地址和目的IP地址1.2 认识端口号1.3 理解"端口号"和"进程ID"1.4 理解源端口号和目的端口号1.5 认识TCP协议1.6 认识UDP协议1.6 TCP vs UDP 可靠性1.7 网络字节序 2. socket 编程接口2.1 socket 常见API2.…

为了SourceInsight从Linux回到Windows

什么是SourceInsight 现在上网搜索这个软件&#xff0c;大多数说他是一个代码阅读软件&#xff1b;但是在官方的说法里面&#xff0c;这是一款支持多语言的编辑器。大概长这样&#xff1a; 看起来十分老旧是吧&#xff0c;但是他其实他已经是第四代了哈哈哈。其实这个软件是我…

LeetCode 全排列

思路&#xff1a;这是一道暴力搜索问题&#xff0c;我们需要列出答案的所有可能组合。 题目给我们一个数组&#xff0c;我们很容易想到的做法是将数组中的元素进行排列&#xff0c;如何区分已选中和未选中的元素&#xff0c;容易想到的是建立一个标记数组&#xff0c;已经选中的…

开发电商ERP系统需要接入哪些平台API?

跟随全渠道发展趋势&#xff0c;很多实体商家开设电商店铺&#xff0c;为消费者提供便捷的购物体验&#xff0c;增强消费者的满意度&#xff0c;同时也提升了企业自身的市场竞争力。为了满足商家业务拓展需求&#xff0c;很多原本主要服务于实体商贸企业的ERP服务商&#xff0c…

vim快捷键 提高工作效率

目录 1. :set nu 显示行号 :set nonu 取消显示行号 2. End 快速移动光标到行尾 3. Home 快速移动光标到行首 4. 10G 快速移动光标到第10行 5. G 快速到文件的底部 6. 1G 快速到第一行 &#xff08;gg&#xff09; 7. …

[Mysql] 的基础知识和sql 语句.教你速成(下)——数据库的约束篇

目录 前言 约束 一.我们为什么需要约束 二.常见的约束类型 NOT NULL 约束 UNIQUE 约束 DEFAULT 约束 PRIMARY KEY FOREIGN KEY CHECK约束 原因&#xff1a; 结尾 前言 距离上篇的更新已经快两周了,这个时候大伙都已经考完了吧!现在更新多少有点马后炮,但是没办法呀…

Kubernetes基于helm安装 harbor

Kubernetes基于helm安装 harbor 之前harbor的安装都是借助docker完成一键安装部署&#xff0c;安装完成之后harbor组件均运行到一台机器上面&#xff0c;本文实践harbor在k8s环境中的部署。 准备工作 根据harbor官方要求&#xff1a; Kubernetes cluster 1.20Helm v3.2.0 …

精准定位推广盲点?Xinstall数据监测让每一分投入都见成效!

在这个数字化时代&#xff0c;App的推广早已不再是简单的“上线即成功”。面对激烈的市场竞争和日益挑剔的用户&#xff0c;如何精准监测推广数据&#xff0c;优化营销策略&#xff0c;成为了每个开发者与营销人员不得不面对的挑战。而在这个关键时刻&#xff0c;Xinstall作为一…