【技术】封装自己的 Maven Archetype Maven 原型

news2024/11/22 16:10:15

封装自己的 Maven Archetype Maven 原型

  • 为什么要封装 Maven Archetype?
  • 如何封装 Maven Archetype?
    • 核心步骤
    • 具体步骤
      • 构建项目
      • 构建原型 archetype
      • IDEA 导入自定义原型
  • 如何删除自定义的 Maven Archetype ?

为什么要封装 Maven Archetype?

用过 Maven 构建项目同学都有这样的经历,每次构建完项目都要重新修改一堆配置,才能满足项目的需求。其实在工作中,很多公司也会封装自己的 Maven 原型,为的就是能快速构建一个符合自己需求的项目,免去项目构建后的额外配置。(这边文章仅针对普通 Maven 项目,SpringBoot 不参与讨论)

如何封装 Maven Archetype?

核心步骤

  • 通过 IDE 构建普通 Maven 项目,然后进行第一次项目配置。
  • 通过磁盘打开项目目录,删除 IDE 的配置信息。
  • 打开 CMD,进入项目根路径下,输入 mvn 命令进行构建原型。

具体步骤

构建项目

本案例使用 IDEA 构建项目

步骤1: 点击 New Project ,打开创建工程的窗口
在这里插入图片描述
步骤2: 左侧选择 Maven,右侧根据实际需求选择原型或者不选择都行。这里就不选择了,按照空原型创建。
在这里插入图片描述
步骤3: 填写项目信息,点击 finish 构建项目。
注意:最终构建出来的原型名字后面会自动拼接archetype,所以这的项目名称可以不带;
在这里插入图片描述
步骤4: 按照需求修改配置。以下配置文件仅供参考。
pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.soft863</groupId>
    <artifactId>soft863-spring</artifactId>
    <version>1.0</version>

    <!-- 配置全局版本号(属性) -->
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <spring.version>5.3.26</spring.version>
    </properties>

    <!-- 添加常用依赖 -->
    <dependencies>
        <!-- Junit 测试依赖 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!-- Spring 相关依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- Lombok 依赖 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
        </dependency>

        <!-- 数据库相关依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.32</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.15</version>
        </dependency>

        <!-- 其他依赖自行添加 -->
    </dependencies>
</project>

构建项目目录。
在这里插入图片描述

构建原型 archetype

步骤1: 关闭IDEA,从磁盘打开项目,删除 .idea 目录。只保留 src 和 pom.xml。其他必要目录,自行选择保留。
在这里插入图片描述
步骤2: 通过 CMD 进入项目根目录。输入命令构建 archetype。

# 清理项目
mvn clean
# 构建 archetype
# -s 是 Maven 软件的 setting.xml 配置文件目录。如果不配置默认使用【用户/.m2/setting.xml】文件
# -d 配置archetype 的包名。在磁盘本地仓库的目录
mvn -s "D:\00-863\99-InstallSoft\apache-maven-3.8.4\conf\settings.xml" archetype:create-from-project -DpackageName=com.soft863

在这里插入图片描述
在这里插入图片描述
步骤3: 构建成功之后,在项目的target 中生成 archetype 原型。使用 CMD 进入 target\generated-sources\archetype 目录,输入命令安装到本地仓库

# 清理并安装到本地仓库
mvn clean install

在这里插入图片描述
如图,就是我本地仓库中生成的 archetype 原型。jar 包通过压缩软件打开。
在这里插入图片描述

  • archetype-resources 目录描述未来你希望生成的项目的模板

  • META-INF/maven/archetype-metadata.xml文件描述模板中文件的相关信息,如应该包含哪些文件,占位符如何替换等
    更加详细可以看:https://blog.csdn.net/gao_zhennan/article/details/116986244

  • 如果最后生成的项目不如意,往往是要修改archetype-metadata.xml文件的

在这里插入图片描述

IDEA 导入自定义原型

步骤1: 点击 New Project ,打开创建工程的窗口
在这里插入图片描述
步骤2: 左侧选择 Maven,右侧【create from archetype】大勾,然后点击【Add Archetype…】添加原型。
在这里插入图片描述
添加信息基于本地仓库信息
在这里插入图片描述
GrougId:com.soft863,第一个红框内容
ArtifactId:soft863-spring-archetype,第二个红框内容
Version:1.0,第三个红框内容
在这里插入图片描述
步骤3: 添加完毕之后,关闭 IDEA,重新打开,就可以看到自定义的 arthetype 了。后续可以使用自定义的原型构建项目。
在这里插入图片描述

如何删除自定义的 Maven Archetype ?

IDEA 导入archetype 后,在 C 盘 "C:\Users\用户名\AppData\Local\JetBrains\IntelliJIdea2021.3\Maven\Indices"目录下自动生成UserArchetypes.xml文件,打开之后内容如下,可以看到自定义的 archetype 信息。

<archetypes>
  <archetype groupId="com.soft863" artifactId="soft863-spring-archetype" version="1.0" />
</archetypes>

如果想删掉所有自定义的 archetype 直接把UserArchetypes.xml文件文件删除即可。
如果想删除一部分,打开文件后删掉指定的<archetype ...>即可。

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

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

相关文章

尚融宝19-Nuxt.js入门

目录 一、搜索引擎优化 1、什么是SEO 2、搜索引擎工作流程 二、服务端渲染和客户端渲染 1、什么是服务端渲染 2、什么是客户端渲染 3、两种方式各有什么优缺点&#xff1f; 三、Nuxt.js 1、Nuxt.js介绍 2、Nuxt.js服务器端渲染 四、安装和运行 五、页面、导航和路…

倒计时 1 天!IoTDB X EMQ 智能汽车主题 Meetup 明日不见不散!

期待已久的智能汽车主题 Meetup 活动明日即将举办&#xff01;天谋科技联手 EMQ、通过数据基础设施平台的实践经验分享&#xff0c;共同为行业用户带来可靠高效的智能制造、智慧车联数据解决方案&#xff0c;快来预约直播&#xff0c;不要错过这场干货满满的智能汽车主题 Meetu…

类中自定义函数并调用and使用钩子函数打印类中变量

在一个类中自定义一个函数A&#xff0c;并在前向传播函数forword中调用这个函数 假设您正在编写一个PyTorch模型&#xff0c;您可以按照以下方式在类中定义函数A&#xff0c;并在forward函数中调用它&#xff1a; import torch import torch.nn as nnclass MyModel(nn.Module)…

Android修行手册 - Android Studio提升性能效率

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断…

【Linux】NanoPi-NEO2外接spi-lcd

这是目录一、显示接口1.1、LCD接口1.2、核心板接口二、添加驱动2.1、确认驱动型号2.2、添加驱动三、测试四、附加4.1、交叉编译器安装4.2、内核和module编译4.3、扩展rootfs大小本文使用环境&#xff1a; 电脑&#xff1a;Ubuntu 18.04.5 LTS 开发板&#xff1a;NanoPi-NEO2 50…

这款知名开车软件,居然暗藏大量病毒

想必大家见多了网上有关 Windows 系统宝藏神级软件的种种推荐。 其中有这么一款软件一直占据推荐榜单前列&#xff0c;并且坐拥无数好评。 它就是在 Steam 上售价仅 19 元&#xff0c;表面看起来平平无奇的 Wallpaper Engine &#xff08;壁纸引擎&#xff09;。 别看它价格不…

常见分布式锁4:zookeeper 瞬时znode节点 + watcher监听机制,ChatGPT回复的解决死锁的方案

原文地址在这里 临时节点具备数据自动删除的功能。当client与ZooKeeper连接和session断掉时&#xff0c;相应的临时节点就会被删除。zk有瞬时和持久节点&#xff0c;瞬时节点不可以有子节点。会话结束之后瞬时节点就会消失&#xff0c;基于zk的瞬时有序节点实现分布式锁&#x…

windows 环境下安装ITOP

该文章修改自旧版本的教程&#xff0c;如有侵权或其他问题请及时联系 windows 环境下安装ITOP 1、安装环境的下载 安装的相关文件列表&#xff0c;自用的程序安装包是版本3.0.2-1&#xff0c;环境是3.2.6版本&#xff1b;也可以直接通过下面链接找到最新的版本进行下载 1.1…

GitLab与jekins结合构建持续集成(cl)环境(2)

目录 GItlab配置邮箱 绑定邮箱 创建群组 添加人员 创建一个项目 添加文件 新建分支 如何拉取代码 Git bash 演示 Git GUI演示 安装jenkins 更改插件镜像源 配置jenkins使用gitlab更新代码 安装jekins插件 配置jenkins免密拉取gatlab代码 jenkins创建项目 将代码…

一种vivado联合vcs仿真以及verdi查看波形的方法

上一篇中提到vivado仿真xilinx官方的axi vip耗时过长、且每次缩放波形时加载慢的问题。后来用了正点原子的AXI DDR例程&#xff0c;将AXI DDR换成了AXI RAM进行读写测试&#xff0c;用以学习了解AXI的工作方式。详见此文读写AXI4接口RAM的简单示例_给米PHY的博客-CSDN博客。 在…

力扣题库刷题笔记20-有效的括号

1、题目如下&#xff1a; 2、个人Python代码实现如下&#xff1a; 第一次读题就理解错了题意&#xff0c;以为是只判断小括号闭合&#xff0c;大括号、中括号只是干扰元素。再次读题后&#xff0c;代码实现如下&#xff1a; 以上代码仍旧是没有理解清楚题意&#xff0c;以为是只…

Linux Shell 实现一键部署二进制docker+docker_compose

docker 前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或Windows 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口。 d…

协议篇之以太网UDP协议

协议篇之以太网UDP协议一、写在前面二、TCP/IP协议分层三、UDP协议数据报格式2.1 MAC层/物理层&#xff1a;2.2 IP层/网络层&#xff1a;2.3 UDP层/传输层&#xff1a;2.4 应用层&#xff1a;四、总结四、写在后面一、写在前面 TCP/IP协议是指一个协议簇&#xff0c;可以理解为…

测试包的更新

有的项目有配了ci自动打包更新&#xff0c;开发有权限&#xff0c;就不用测试更新&#xff1b;有的是在阿里云上&#xff0c;测试没有权限&#xff0c;也是开发更新&#xff1b;测试自己的测试服务器&#xff0c;部分开发没有上传下载的权限&#xff0c;所以需要测试来进行更新…

CentOS 8自动化安装MongoDB并安装和实验master-slave集群、副本集群(Replica Set)、分片集群(Sharding)

文章目录CentOS 8自动化安装MongoDB安装Master-Slave集群安装并测试副本集(Replica Set)集群安装副本集(Replica Set)集群实验测试安装并测试分片集群&#xff08;Sharding&#xff09;注意实验使用的是ARM架构的CentOS 8 虚拟机 CentOS 8自动化安装MongoDB 首先&#xff0c;更…

分布式事务-概念-实现方式

分布式事务 文章目录分布式事务一、分布式事务相关概念1.分布式事务架构图2.理解本地事务相关概念3.理解分布式事务相关概念1.CAP理论2.刚性事务&#xff08;CP&#xff09;与柔性事务&#xff08;AP&#xff09;3.基于AP模型衍生下的BASE理论4 .如何从大方向选择分布式事务&am…

MySQL正则表达式 | 事务详解

目录 一、正则表达式 实例操作 二、事务 事务控制语句 MYSQL 事务处理主要有两种方法 SQL测试代码 PHP中使用事务实例 使用保留点 SAVEPOINT 一、正则表达式 MySQL可以通过 LIKE ...% 来进行模糊匹配。 MySQL 同样也支持其他正则表达式的匹配&#xff0c; MySQL中使用…

【嵌入式Linux内核驱动】GPIO子系统

GPIO子系统 总体框架 通用功能 可以设为输出&#xff1a;让它输出高低电平&#xff1b;可以设为输入&#xff0c;读取引脚当前电平&#xff1b;可以用来触发中断 通用属性 Active-High and Active-LowOpen Drain and Open Source 开漏和开源 GPIOLIB向上提供的gpiod相关接…

数据结构与算法之手撕排序算法

前言 为什么要学习排序算法&#xff1f; 根据统计&#xff0c;早起大型机CPU资源的四分之一都花在了数据排序上面。排序算法作为最基础的算法&#xff0c;各种操作系统、编程语言都提供了内置的实现。既然排序实现随处可见&#xff0c;我们为什么还要自己动手实现呢&#xff1…

文章伪原创-文章伪原创工具

伪原创原理 文章伪原创的原理是将一篇原始文章进行修改、改写、调整或者替换一些词句等方式&#xff0c;生成与原始文章类似但又不完全相同的新文章。 文章伪原创的实现需要用到自然语言处理技术和相关的算法。具体的过程包括以下几个步骤&#xff1a; 分析原始文章&#xff…