当前位置: 首页 > 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…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

Python实现简单音频数据压缩与解压算法

Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中&#xff0c;压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言&#xff0c;提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...

CMake系统学习笔记

CMake系统学习笔记 基础操作 最基本的案例 // code #include <iostream>int main() {std::cout << "hello world " << std::endl;return 0; }// CMakeLists.txt cmake_minimum_required(VERSION 3.0)# 定义当前工程名称 project(demo)add_execu…...