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的实现

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

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

相关文章

决策树(Decision Tree)基础知识

目录 一、回忆1、*机器学习的三要素&#xff1a;1&#xff09;*函数族2&#xff09;*目标函数2.1&#xff09;*模型的其他复杂度参数 3&#xff09;*优化算法 2、*前处理/后处理1&#xff09;前处理&#xff1a;特征工程2&#xff09;后处理&#xff1a;模型选择和模型评估 3、…

Python学习(十四)pandas库入门手册

目录 一、安装与导入二、核心数据结构2.1 Series 类型&#xff08;一维数组&#xff09;2.2 DataFrame 类型&#xff08;二维数组&#xff09; 三、数据读取与写入3.1 读取 CSV 和 Excel 文件3.2 写入数据 四、数据清洗与处理4.1 处理缺失值4.2 数据筛选4.3 数据排序 五、数据分…

通过计费集成和警报监控 Elasticsearch Service 成本

作者&#xff1a;来自 Elastic Alexis Charveriat 使用 Elasticsearch 服务计费集成来跟踪、定制和提醒 Elasticsearch 服务费用。 监控和管理你的Elasticsearch服务&#xff08;ESS&#xff09;使用情况和成本对高效运营至关重要。 Elasticsearch服务计费集成提供了一种简化的…

cmake、CMakeLists.txt、make、ninja

文章目录 一、概念0.cmake官网1.什么是cmake2.为什么使用cmake3.CMakeLists.txt 二、CMakeLists.txt语法&#xff1a;如何编写CMakeLists.txt&#xff0c;语法详解(0)语法基本原则(1)project关键字(2)set关键字(3)message关键字(4)add_executable关键字(5)add_subdirectory关键…

DeepSeek本地接口调用(Ollama)

前言 上篇博文&#xff0c;我们通过Ollama搭建了本地的DeepSeek模型&#xff0c;本文主要是方便开发人员&#xff0c;如何通过代码或工具&#xff0c;通过API接口调用本地deepSeek模型 前文&#xff1a;DeepSeek-R1本地搭建_deepseek 本地部署-CSDN博客 注&#xff1a;本文不仅…

前端基础之浏览器本地存储

如我们在一些网站中&#xff0c;去进行数据搜索&#xff0c;在浏览器中是有一个对于的存储的&#xff0c;并且我们可以去手动进行value的增删操作 LocalStroage的使用 并且将浏览器关闭之后&#xff0c;数据也会保存&#xff0c;除非用户手动清理数据或是清空缓存 <!DOCTYPE…

2025 聚合易支付完整版PHP网站源码

源码介绍 2025 聚合易支付完整版PHP网站源码 PHP版本&#xff1a;PHP74 源码上传服务器&#xff0c;解压访问域名即可安装 安装完成后一定要设置伪静态 源码里面nginx.txt 就是伪静态 然后复制粘贴到伪静态里面保存即可 部分截图 源码获取 2025 聚合易支付完整版PHP网站源码…

Spring Boot 3 整合 MinIO 实现分布式文件存储

引言 文件存储已成为一个做任何应用都不可回避的需求。传统的单机文件存储方案在面对大规模数据和高并发访问时往往力不从心&#xff0c;而分布式文件存储系统则提供了更好的解决方案。本篇文章我将基于Spring Boot 3 为大家讲解如何基于MinIO来实现分布式文件存储。 分布式存…

easyExcel使用案例有代码

easyExcel 入门,完成web的excel文件创建和导出 easyExcel官网 EasyExcel 的主要特点如下&#xff1a; 1、高性能&#xff1a;EasyExcel 采用了异步导入导出的方式&#xff0c;并且底层使用 NIO 技术实现&#xff0c;使得其在导入导出大数据量时的性能非常高效。 2、易于使…

NVIDIA(英伟达) GPU 芯片架构发展史

GPU 性能的关键参数 CUDA 核心数量&#xff08;个&#xff09;&#xff1a;决定了 GPU 并行处理能力&#xff0c;在 AI 等并行计算类业务下&#xff0c;CUDA 核心越多性能越好。 显存容量&#xff08;GB&#xff09;&#xff1a;决定了 GPU 加载数据量的大小&#xff0c;在 AI…

FFMPEG利用H264+AAC合成TS文件

本次的DEMO是利用FFMPEG框架把H264文件和AAC文件合并成一个TS文件。这个DEMO很重要&#xff0c;因为在后面的推流项目中用到了这方面的技术。所以&#xff0c;大家最好把这个项目好好了解。 下面这个是流程图 从这个图我们能看出来&#xff0c;在main函数中我们主要做了这几步&…

获取Kernel32基地址

暴力搜索 32位在4G内存搜索有一定可行性&#xff0c;但是处理起来其实还是比较麻烦的&#xff0c;因为内存不可读会触发异常&#xff0c;需要对这些异常问题进行处理。 优化思路:缩小范围、增大搜索步长 (1)不优化&#xff0c;原始内存特征匹配&#xff0c;容易出错&#xf…

【 <一> 炼丹初探:JavaWeb 的起源与基础】之 Servlet 与 JSP 的协作:MVC 模式的雏形

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、Servl…

如何在Github上面上传本地文件夹

前言 直接在GitHub网址上面上传文件夹是不行的&#xff0c;需要一层一层创建然后上传&#xff0c;而且文件的大小也有限制&#xff0c;使用Git进行上传更加方便和实用 1.下载和安装Git Git - Downloads 傻瓜式安装即可 2.获取密钥对 打开自己的Github&#xff0c;创建SSH密钥&…

软件高级架构师 - 软件工程

补充中 测试 测试类型 静态测试 动态测试 测试阶段 单元测试中&#xff0c;包含性能测试&#xff0c;如下&#xff1a; 集成测试中&#xff0c;包含以下&#xff1a; 维护 遗留系统处置 高水平低价值&#xff1a;采取集成 对于这类系统&#xff0c;采取 集成 的方式&…

初始提示词(Prompting)

理解LLM架构 在自然语言处理领域&#xff0c;LLM&#xff08;Large Memory Language Model&#xff0c;大型记忆语言模型&#xff09;架构代表了最前沿的技术。它结合了存储和检索外部知识的能力以及大规模语言模型的强大实力。 LLM架构由外部记忆模块、注意力机制和语…

react中如何使用使用react-redux进行数据管理

以上就是react-redux的使用过程&#xff0c;下面我们开始优化部分&#xff1a;当一个组件只有一个render生命周期&#xff0c;那么我们可以改写成一个无状态组件&#xff08;UI组件到无状态组件&#xff0c;性能提升更好&#xff09;

Vue 监听器的魔法之旅:@Watch(‘form.productId’) vs @Watch(‘value’) 大揭秘!✨

以下是一篇技术博客&#xff0c;主题围绕 Watch(form.productId) 和 Watch(value) 这两个 watcher 的功能、区别及使用场景&#xff0c;基于 compare-form.vue 的代码。准备好一起探索 Vue 监听器的魔法了吗&#xff1f;&#x1f604; &#x1f604; Vue 监听器的魔法之旅&…

SqlSugar 语法糖推荐方式

//方式1&#xff1a;var dd _repository._Db.Queryable<ConfigAggregateRoot, UserRoleEntity>((o, p) > o.Id p.Id).Select((o, p) > new{o.Id,o.Remark,p.RoleId,});//方式2&#xff1a;不推荐使用&#xff0c;建议优先使用 Lambda 表达式&#xff0c;因为它更…

数据结构:八大排序(冒泡,堆,插入,选择,希尔,快排,归并,计数)详解

目录 一.冒泡排序 二.堆排序 三.插入排序 四.选择排序 五.希尔排序 六.快速排序 1.Lomuto版本&#xff08;前后指针法&#xff09; 2.Lomuto版本的非递归算法 3.hoare版本&#xff08;左右指针法&#xff09; 4.挖坑法找分界值&#xff1a; 七.归并排序 八.计数排序…