当前位置: 首页 > news >正文

idea生成自定义Maven原型(archetype)项目工程模板

一、什么是Maven原型(Maven archetype)

引自官网的介绍如下:
Maven原型插件官网地址
在这里插入图片描述
这里采用DeepSeek助手翻译如下:

Maven 原型
什么是原型?
简而言之,原型是一个 Maven 项目模板工具包。原型被定义为一种原始模式或模型,同类的所有其他事物都是由此衍生而来。这个名字很贴切,因为我们试图提供一个系统,该系统能以一致的方式生成 Maven 项目。原型将帮助作者为用户创建 Maven 项目模板,并为用户提供生成这些项目模板的参数化版本的方法。
使用原型提供了一种很好的方式,能让开发人员以与项目或组织采用的最佳实践相一致的方式快速上手。在 Maven 项目中,我们使用原型,通过提供一个示例项目,来尽可能快地让我们的用户启动并运行项目。这个示例项目展示了 Maven 的许多特性,同时向新用户介绍 Maven 所采用的最佳实践。新用户在几秒钟内就可以拥有一个可运行的 Maven 项目,以此作为跳板来进一步研究 Maven 的更多特性。我们还努力使原型机制具有可添加性,也就是说,允许将项目的一部分捕获到一个原型中,这样项目的某些部分或方面就可以添加到现有项目中。一个很好的例子就是 Maven 站点原型。例如,如果你已经使用了快速入门原型来生成一个可运行的项目,那么你可以通过在这个现有项目中使用站点原型,快速为该项目创建一个站点。你可以使用原型做任何类似这样的事情。
你可能希望在你的组织内规范 J2EE 开发,所以你可能想要为 EJB、WAR 或者你的 Web 服务提供原型。一旦这些原型被创建并部署到你组织的资源库中,组织内的所有开发人员都可以使用它们。

个人理解,Maven原型就是用于生成可自定义的,包含公用所需要的,能直接运行使用的Maven项目模板。是为了后续能帮助开发者更快速的生成和模板一致的项目工程,使得用户不需要重新整理项目骨架,直接使用默认的模板骨架,或在模板骨架上做修改即可。

二、Maven原型(Maven archetype)应用

1.在项目pom.xml文件中引入maven-archetype-plugin原型插件

这里我通常找Maven依赖的仓库地址如下,便于选择对应的版本:
https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-archetype-plugin

首先,找到自己要作为脚手架模板的项目,或者自己新建项目,然后自定义项目骨架目录,创建基础配置以及工具类等等。然后在项目pom.xml中加入maven-archetype-plugin插件。

这里我先使用idea开发工具创建Java项目,然后自定义修改项目骨架,加入子项目目录,构成简单的聚合项目。项目结构如下图:
在这里插入图片描述
聚合项目展开后骨架目录截图:
在这里插入图片描述
在项目父级pom.xml文件中加入maven-archetype-plugin插件,这里我选的是最新版本3.3.1,版本看情况选择就好,如下图:
在这里插入图片描述
在这里插入图片描述

2.使用Maven原型(archetype)打包构建Maven原型项目

构建命令如下:
archetype:create-from-project

Maven官网介绍:
此命令目标读取您的源文件和资源文件、其参数值以及您在.property文件中指定的属性,并使用它们使用Maven原型打包创建Maven原型项目。如果你构建了最终的项目,它将创建原型。然后,您可以使用此原型创建与原始项目类似的新项目。

命令说明-引自官网介绍如下:
Maven官网介绍archetype:create-from-project命令地址
archetype:create-from-project命令:表示从当前项目创建原型项目。

点击idea右侧maven图标,打开maven面板,选择父级工程名,找到插件,选择archetype:create-from-project命令,直接双击该命令,命令执行完后,会在父级项目目录下生成target目录。如下图:
在这里插入图片描述
archetype:create-from-project命令执行成功截图如下:
在这里插入图片描述
命令执行成功后,在父级根目录下,会生成target目录文件(也就是自己自定义的项目脚手架工程)。如下图:
在这里插入图片描述
最后我们可以把生成的脚手架项目模板加入到Maven中,便于后续创建项目时,可直接选择,来生成自定义的Maven模板项目,方便后续开发搭建项目工程。

3.添加项目模板到Maven中

找到target目录 -> generated-source -> archetype目录。如下图:
在这里插入图片描述
再使用idea打开archetype目录。如下图:
在这里插入图片描述
打开Maven面板,并执行install命令
在这里插入图片描述
在这里插入图片描述
install命令执行成功之后,执行archetype:crawl命令,此时Maven会搜索并更新本地或远程仓库中的archetype。

‌archetype:crawl
archetype:crawl命令的主要作用是搜索并更新仓库中的archetype。‌
具体来说,当你执行mvn archetype:crawl命令时,Maven会搜索并更新本地或远程仓库中的archetype。

这个命令的作用包括:

  • a.搜索仓库中的archetype‌:Maven会遍历仓库中的所有archetype,找到所有可用的模板。
  • b.更新archetype目录‌:根据搜索结果,更新本地仓库中的archetype目录,生成或更新archetype-catalog.xml文件,该文件包含了仓库中所有可用的archetype信息。
    在这里插入图片描述

此时会在本地Maven仓库里生成archetype-catalog.xml原型目录配置文件如下:
archetype-catalog Maven官网配置说明

C:\Users\18292\.m2\repository\archetype-catalog.xml

在这里插入图片描述archetype-catalog.xml是标准的目录文件,其中包含有关原型的信息,以便用户可以从任意数量的目录中获得原型列表以生成新项目。
生成的archetype-catalog.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog xsi:schemaLocation="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 https://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd"xmlns="https://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><archetypes><archetype><groupId>com.learn</groupId><artifactId>learn-project-archetype</artifactId><version>1.0-SNAPSHOT</version><description>learn-project</description></archetype></archetypes>
</archetype-catalog>

三、测试使用idea工具构建新Maven项目

idea创建项目,File -> New -> Project。如下图:

a.选择Maven原型方式创建项目
b.自定义项目名称
c.指定项目存放目录
d.添加自定义的原型项目模板,在弹窗中填写上面生成的archetype-catalog.xml文件中原型项目的内容,点击Add添加。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击创建按钮后,直接使用idea打开,等待Maven加载,加载完成后,会直接生成和自定义模板项目一样结构的Maven项目。如下图:
在这里插入图片描述
至此,使用Maven原型构建自定义项目模板完成。有个情况是,每次创建Maven项目,都需要手动添加本地的Archetype项目原型才可以创建。

针对这个问题,我们可以这样处理,在创建项目时,更改Catalog选项,直接选择自己本地原型配置文件。首先点击Manage catalogs按钮,添加本地自定义生成的archetype-catalog.xml配置文件。如下图:
在这里插入图片描述
在这里插入图片描述
配置好后,在Catalog配置上,我们选择我们刚添加的archetype-catalog.xml配置,会自动在下面Archetype下拉选择中列出我们自己的原型配置,直接选择,然后点击Create创建按钮,就可以生成对应的模板项目。如下图:
在这里插入图片描述
如此,后续创建新Maven项目时,就可以直接选择我们自定义的项目模板,来构建新项目了,便于项目框架统一管理,便于后续新项目的开发和维护。

参考博文:

Maven仓库官方地址【首选】
Maven中央仓库地址大全
maven仓库的地址
阿里云云效 Maven

idea创建java的maven聚合工程

maven之自定义archetype
在 Idea 选择自己的 Archetype 创建项目
Maven依赖管理项目构建工具
Maven安装本地的jar包和创建带模板的自定义项目
架构师必备技能:Maven Archetype生成项目模板

项目模板脚手架搭建
maven中自定义MavenArchetype的实现

相关文章:

idea生成自定义Maven原型(archetype)项目工程模板

一、什么是Maven原型&#xff08;Maven archetype&#xff09; 引自官网的介绍如下&#xff1a; Maven原型插件官网地址 这里采用DeepSeek助手翻译如下&#xff1a; Maven 原型 什么是原型&#xff1f; 简而言之&#xff0c;原型是一个 Maven 项目模板工具包。原型被定义为一…...

Redis面试常见问题——使用场景问题

目录 Redis面试常见问题 如果发生了缓存穿透、击穿、雪崩&#xff0c;该如何解决&#xff1f; 缓存穿透 什么是布隆过滤器&#xff1f; 缓存击穿 缓存雪崩 双写一致性&#xff08;redis做为缓存&#xff0c;mysql的数据如何与redis进行同步呢&#xff1f;&#xff09; …...

样式和ui(待更新)

element-plus 先在项目下执行安装语句执行按需导入的命令按照官方文档修改vitest.json sass样式定制 npm -i sass -D在项目下准备定制的样式文件 styles/element/index.scss(!注意这里是.scss文件在vitest.json 修改配置文件 Components({resolvers: [ElementPlusResolver(…...

大摩闭门会:250228 学习总结报告

如果图片分辨率不足&#xff0c;可右键图片在新标签打开图片或者下载末尾源文件进行查看 本文只是针对视频做相应学术记录&#xff0c;进行学习讨论使用...

线程(Thread)

一、概念 线程&#xff1a;线程是一个轻量级的进程 二、线程的创建 1、线程的空间 &#xff08;1&#xff09;进程的空间包括&#xff1a;系统数据段、数据段、文本段 &#xff08;2&#xff09; 线程位于进程空间内部 &#xff08;3&#xff09; 栈区独享、与进程共享文本段、…...

AI军备竞赛2025:GPT-4.5的“情商革命”、文心4.5的开源突围与Trae的代码革命

AI军备竞赛2025&#xff1a;GPT-4.5的“情商革命”、文心4.5的开源突围与Trae的代码革命 ——一场重塑人类认知边界的技术战争 一、OpenAI的“感性觉醒”&#xff1a;GPT-4.5的颠覆与争议 1.1 从“冷面学霸”到“温柔导师”&#xff1a;AI的情商跃迁 当用户输入“朋友放鸽子&…...

DeepSeek + 自由职业 发现新大陆,从 0 到 1 全流程跑通商业 IP

DeepSeek 自由职业 发现新大陆&#xff0c;从 0 到 1 全流程跑通商业 IP 商业定位1. 商业定位分析提示词2. 私域引流策略提示词3. 变现模型计算器提示词4. 对标账号分析提示词5. 商业IP人设打造提示词6. 内容选题策略提示词7. 用户人群链分析提示词8. 内容布局与转化路径设计提…...

Java进阶——常用工具类

日常开发中&#xff0c;Arrays、Collections 和 Objects 是非常实用的工具类&#xff0c;提供了丰富的功能&#xff0c;从而可以更高效地处理数组、集合和对象。本文将详细介绍这三个工具类的重要知识细节。 本文目录 一、 Arrays数组转集合并行排序优化Stream 支持 二、 Colle…...

【考试大纲】高级系统架构设计师考试大纲

目录 引言一、 考试说明1.考试目标2.考试要求3.考试科目设置二、 考试范围考试科目1:系统架构设计综合知识考试科目2:系统架构设计案例分析考试科目3:系统架构设计论文引言 最新的系统架构设计师考试大纲出版于 2022 年 11 月,本考试大纲基于此版本整理。 一、 考试说明…...

上位机知识篇---四种CPU架构交叉编译

文章目录 前言一、四种 CPU 架构1. x86/x86_64指令集位宽&#xff1a;应用场景编译工具 2. ARM指令集位宽&#xff1a;应用场景编译工具 3. MIPS指令集位宽应用场景编译工具 4. RISC-V指令集位宽应用场景编译工具 二、交叉编译1. 什么是交叉编译&#xff1f;定义应用场景 2. 交…...

隐式转换为什么导致索引失效

SELECT * FROM users WHERE id 123;这条语句失效的原因就是id是int类型的主键&#xff0c;比较的时候把id从int转化为字符串来比较了&#xff0c;而字符串的比较规则和int的比较规则明显不同&#xff0c;字符串是字典序比较的&#xff0c;还涉及到数据的长度&#xff0c;那为什…...

【含文档+PPT+源码】基于过滤协同算法的旅游推荐管理系统设计与实现

项目介绍 本课程演示的是一款基于过滤协同算法的旅游推荐管理系统设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套…...

SpringBoot @Value 注解使用

Value 注解用于将配置文件中的属性值注入到Spring管理的Bean中。 1. 基本用法 Value 可以直接注入配置文件中的属性值。 配置文件 (application.properties 或 application.yml) 配置文件定义需要注入的数据。 consumer:username: lisiage: 23hobby: sing,read,sleepsubje…...

Spring Boot 3.x 系列【3】Spring Initializr快速创建Spring Boot项目

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Spring Boot版本3.0.3 源码地址&#xff1a;https://gitee.com/pearl-organization/study-spring-boot3 文章目录 前言安装JDK 17创建Spring Boot 项目 方式1&#xff1a;网页在线生成方式2&#…...

高频 SQL 50 题(基础版)_1667. 修复表中的名字

高频 SQL 50 题&#xff08;基础版&#xff09;_1667. 修复表中的名字 select user_id ,concat(upper(substring(name,1,1)),lower(substring(name,2))) as name from Users order by user_id...

Windwos10 系统没有微软商店(Microsoft Store)怎么办?

操作方法 管理员身份打开power shell &#xff0c; 输入 Get-AppxPackage -AllUsers Microsoft.WindowsStore* | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “ ( ( (_.InstallLocation)\AppXManifest.xml”} 按下enter按键&#xff0c;就OK了...

c++同步机制

总结 多线程访问共享数据时需要加锁 多线程数据竞争 假如有一个变量shared_variable被10个线程共享&#xff0c;每个线程在循环中对shared_variable进行 1000 次累加操作&#xff0c;我们期望最终值为10000。 #include <iostream> #include <thread> #include …...

RuoYi框架介绍,以及如何基于Python使用RuoYi框架

若依框架&#xff08;RuoYi&#xff09;是一款基于Spring Boot和Vue.js的开源快速开发平台&#xff0c;广泛应用于企业级应用开发。它提供了丰富的功能模块和代码生成工具&#xff0c;帮助开发者快速搭建后台管理系统。 主要特点 前后端分离&#xff1a;前端采用Vue.js&#x…...

Go 语言环境安装

1.go官网下载安装包 All releases - The Go Programming Language 双击安装,一路下一步 2.安装完后查看版本 打开cmd 输入 以下 ,查看语言版本 go version 查看环境变量是否自动设置成功...

vector 面试点总结

ps&#xff1a;部分内容使用“AI”查询 一、入门 1、什么是vector 动态数组容器&#xff0c;支持自动扩容、随机访问和连续内存存储。 2、怎么创建-初始化vector std::vector<int> v; // 创建空vectorstd::vector<int> v {1, 2, 3}; // 直接初始化std::vec…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...