使用mvn archetype命令,构建自定义springboot archetype脚手架创建工程的方法

news2025/3/15 16:19:26

使用mvn archetype命令,构建自定义springboot archetype脚手架创建工程的方法

文章目录

  • 使用mvn archetype命令,构建自定义springboot archetype脚手架创建工程的方法
    • 一、背景
    • 二、环境
    • 三、archetype插件配置
    • 四、基于项目构建脚手架archetype包
    • 五、检查模板内容
      • 1. 删除不必要的log
      • 2. 将脚手架安装到本地仓
    • 六、安装自定义的archetype脚手架到本地仓
    • 七、用自定义的archetype脚手架创建项目
    • 总结

一、背景

“脚手架”这个词可能在前端开发比较流行,后端相对的概念提的比较少,但创建过springboot项目的都知道有个spring initializr可以辅助创建工程结构,这种工具+模板工程可以理解为“脚手架”。基于mvn archetype命令,我们可以自己定义项目模板,开发者可以一键生成具有特定结构和配置的项目,极大地简化了项目创建的繁琐过程。自定义模板工程的在于,它将源工程转化为模板工程,通过替换特定字符串或文件名为占位符,从而实现工程的快速克隆与定制。这一过程简单的说可以分为三步:模板的创建、模板发布与应用。

二、环境

  • win 10
  • Apache Maven 3.3.9
  • Java version: 17.0.9

三、archetype插件配置

mvn archetype默认不会对yml文件进行替换,ruapplication.yml中的spring.application.name属性的动态变更。
如需替换需要在模板项目中添加插件,使用archetypeFilteredExtentions配置可以替换的文件后缀,之后在使用archetype保留的占位符,才能正常生效。

<!-- 脚手架archetype原型插件 -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-archetype-plugin</artifactId>
    <version>3.1.2</version>
    <configuration>
        <propertyFile>archetype.properties</propertyFile>
        <encoding>UTF-8</encoding>
        <archetypeFilteredExtentions>java,xml,yml,properties</archetypeFilteredExtentions>
    </configuration>
</plugin>

四、基于项目构建脚手架archetype包

  • 进入项目根目录执行命令,构建archetype脚手架代码模板
cd /d E:\temp\my-demo
mvn clean archetype:create-from-project 

五、检查模板内容

1. 删除不必要的log

检查下目录下是否有构建时产生的日志文件,将无用文件删除,包括一些本地调试用的配置文件。

2. 将脚手架安装到本地仓

  • 首先需要修改pom.xml中的maven坐标
    构建成功后进入archetype目录,将pom.xml中的maven坐标修改为自己项目坐标:
    cd E:\temp\my-demo\target\generated-sources\archetype
  <groupId>com.demo.archetype.my-demo</groupId>
  <artifactId>my-demo-archetype</artifactId>
  <version>1.0.0</version>
  <packaging>maven-archetype</packaging>
  <name>脚手架模板</name>
  • 修改application.xml的appname:
    进入E:\temp\my-demo\target\generated-sources\archetype\src\main\resources\archetype-resources\src\main\resources目录,
    打开application.yml文件,修改name属性为${artifactId}占位符。
spring:
  application:
    name: ${artifactId}
  • 常用占位符如下:
 _rootArtifactId_ :做文件夹名替换用,例如_rootArtifactId_-dao, 占位符来动态获取父工程的ArtifactId
 ${rootArtifactId} : 它保存用户输入的值作为项目名(maven在用户运行原型时在提示符中询问为artifactid:的值)
 ${artifactId}  :如果您的项目由一个模块组成,则此变量的值将与${rootArtifactId}相同,但如果项目包含多个模块,则此变量将由每个模块文件夹中的模块名替
 ${package} : 用户为项目提供的包,也在用户运行原型时由maven提示
 ${packageInPathFormat} : 与${package}变量的值相同,但将“.”替换为字符“/”,例如:,对于包com.aurora.demo,此变量为com/aurora/demo
 ${groupId}  :用户为项目提供的groupid,在用户运行原型时由maven提示
 ${version}  :版本号

六、安装自定义的archetype脚手架到本地仓

上步修改了pom中的maven坐标,此处可以直接执行mvn install命令,安装到本地仓。

cd E:\temp\my-demo\target\generated-sources\archetype
#pom坐标修改后直接安装到本地仓
mvn clean install -DskipTests
#未修改pom文件,或想自定maven坐标,可以加入以下参数
mvn clean install -DskipTests ^
-DgroupId=com.demo.archetype.my-demo  ^
-DartifactId=my-demo-archetype  ^
-Dversion=1.0.0 ^
-Dpackaging=jar 

七、用自定义的archetype脚手架创建项目

cd /d E:\mvn-temp
#创建项目
mvn archetype:generate ^
-B -e -X ^
-DgroupId=com.demo ^
-DartifactId=mydemo ^
-Dversion=1.0.0-SNAPSHOT ^
-Dpackage=com.demo.crp ^
-DarchetypeGroupId=com.demo.archetype.my-demo ^
-DarchetypeArtifactId=my-demo-archetype ^
-DarchetypeVersion=1.0.0 ^
-DarchetypeCatalog=local ^
-DinteractiveMode=false
  • 参数说明
mvn archetype:generate ^
#-e打印错误信息,-X打印debug信息
-B -e -X ^
#新建项目的maven坐标 ^
-DgroupId=com.demo ^
-DartifactId=mydemo ^
-Dversion=1.0.0-SNAPSHOT ^
-Dpackage=com.demo.crp ^
#自定义脚手架的maven坐标 ^
-DarchetypeGroupId=com.demo.archetype.my-demo ^
-DarchetypeArtifactId=my-demo-archetype ^
-DarchetypeVersion=1.0.0 ^
#其它生成参数 ^
-DarchetypeCatalog=local ^
-DinteractiveMode=false

总结

以上是基于本地仓构建archetype脚手架及使用脚手架创建项目的方法,也可以使用mvn deploy发布到私服,统一团队的编码风格。

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

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

相关文章

MacOS 15.3.1 安装 GPG 提示Error: unknown or unsupported macOS version: :dunno

目录 1. 问题锁定 2. 更新 Homebrew 3. 切换到新的 Homebrew 源 4. 安装 GPG 5. 检查 macOS 版本兼容性 6. 使用 MacPorts 或其他包管理器 7. 创建密钥&#xff08;生成 GPG 签名&#xff09; 往期推荐 1. 问题锁定 通常是因为你的 Homebrew 版本较旧&#xff0c;或者你…

硬件驱动——51单片机:独立按键、中断、定时器/计数器

目录 一、独立按键 1.原理 2.封装函数 3.按键控制点灯 数码管 二、中断 1.原理 2.步骤 3.中断寄存器IE 4.控制寄存器TCON 5.打开外部中断0和1 三、定时器/计数器 1.原理 2.控制寄存器TCON 3.工作模式寄存器TMOD 4.按键控制频率的动态闪烁 一、独立按键 1…

P1259 黑白棋子的移动【java】【AC代码】

有 2n 个棋子排成一行&#xff0c;开始为位置白子全部在左边&#xff0c;黑子全部在右边&#xff0c;如下图为 n5 的情况&#xff1a; 移动棋子的规则是&#xff1a;每次必须同时移动相邻的两个棋子&#xff0c;颜色不限&#xff0c;可以左移也可以右移到空位上去&#xff0c;但…

67.Harmonyos NEXT 图片预览组件之性能优化策略

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; Harmonyos NEXT 图片预览组件之性能优化策略 文章目录 Harmonyos NEXT 图片预览组件之性能优化策略效果预览一、性能优化概述1. 性能优化的关键指标…

Windows下安装Git客户端

① 官网地址&#xff1a;https://git-scm.com/。 ② Git的优势 大部分操作在本地完成&#xff0c;不需要联网&#xff1b;完整性保证&#xff1b;尽可能添加数据而不是删除或修改数据&#xff1b;分支操作非常快捷流畅&#xff1b;与Linux 命令全面兼容。 ③ Git的安装 从官网…

SAP IBP for Supply Chain Certification Guide (Parag Bakde, Rishabh Gupta)

SAP IBP for Supply Chain Certification Guide (Parag Bakde, Rishabh Gupta)

如何处理PHP中的日期和时间问题

如何处理PHP中的日期和时间问题 在PHP开发中&#xff0c;日期和时间的处理是一个常见且重要的任务。无论是记录用户操作时间、生成时间戳&#xff0c;还是进行日期计算&#xff0c;PHP提供了丰富的函数和类来帮助开发者高效处理这些需求。本文将详细介绍如何在PHP中处理日期和…

TDengine 使用最佳实践

简介 阅读本文档需要具备的基础知识&#xff1a; Linux系统的基础知识&#xff0c;及基本命令网络基础知识&#xff1a;TCP/UDP、http、RESTful、域名解析、FQDN/hostname、hosts、防火墙、四层/七层负载均衡 本文档的阅读对象有&#xff1a;架构师、研发工程师&#xff0c;…

Spring、Spring Boot、Spring Cloud 的区别与联系

1. Spring 框架 定位&#xff1a;轻量级的企业级应用开发框架&#xff0c;核心是 IoC&#xff08;控制反转&#xff09; 和 AOP&#xff08;面向切面编程&#xff09;。 核心功能&#xff1a; 依赖注入&#xff08;DI&#xff09;&#xff1a;通过 Autowired、Component 等注解…

AutoGen-构建问答智能体

概述 如https://github.com/microsoft/autogen所述&#xff0c;autogen是一多智能体的框架&#xff0c;属于微软旗下的产品。 依靠AutoGen我们可以快速构建出一个多智能体应用&#xff0c;以满足我们各种业务场景。 环境说明 python&#xff0c;3.10AutoGen&#xff0c;0.4.2…

C语言实现括号匹配检查及栈的应用详解

目录 栈数据结构简介 C语言实现栈 栈的初始化 栈的销毁 栈的插入 栈的删除 栈的判空 获取栈顶数据 利用栈实现括号匹配检查 总结 在编程中&#xff0c;经常会遇到需要检查括号是否匹配的问题&#xff0c;比如在编译器中检查代码的语法正确性&#xff0c;或者在…

阿里云魔笔低代码应用开发平台快速搭建教程

AI低代码&#xff0c;大模型时代应用开发新范式 什么是魔笔 介绍什么是魔笔低代码应用开发平台。 魔笔是一款面向全端&#xff08;Web、H5、全平台小程序、App&#xff09;场景的模型驱动低代码开发平台&#xff0c;提供一站式的应用全生命周期管理&#xff0c;包括可视化开发…

A Survey on Mixture of Experts 混合专家模型综述(第二部分:混合专家系统设计)

A Survey on Mixture of Experts 混合专家模型综述 (第一部分&#xff1a;混合专家算法设计) A Survey on Mixture of Experts arxiv github&#xff1a;A-Survey-on-Mixture-of-Experts-in-LLMs ​ ​ ​ 5 System Design of Mixture of Experts While ​Mixture of Exper…

docker python:latest镜像 允许ssh远程

跳转到家目录 cd创建pythonsshdockerfile mkdir pythonsshdockerfile跳转pythonsshdockerfile cd pythonsshdockerfile创建Dockerfile文件 vim Dockerfile将Dockerfile的指令复制到文件中 # 使用 python:latest 作为基础镜像 # 如果我的镜像列表中没有python:latest镜像&…

Aim Robotics电动胶枪:机器人涂胶点胶的高效解决方案

在自动化和智能制造领域&#xff0c;机器人技术的应用越来越广泛&#xff0c;而涂胶和点胶作为生产过程中的重要环节&#xff0c;也逐渐实现了自动化和智能化。Aim Robotics作为一家专注于机器人技术的公司&#xff0c;其推出的电动胶枪为这一领域带来了高效、灵活且易于操作的…

【HDLbits--分支预测器简单实现】

HDLbits--分支预测器简单实现 1 timer2.branche predicitors3.Branch history shift4.Branch direction predictor 以下是分支预测器的简单其实现&#xff1b; 1 timer 实现一个计时器&#xff0c;当load1’b1时&#xff0c;加载data进去&#xff0c;当load1’b0时进行倒计时&…

Linux--操作系统/进程

ok&#xff0c;我们今天学习linux中的操作系统和进程 1. 冯诺依曼体系 我们常⻅的计算机&#xff0c;如笔记本。我们不常⻅的计算机&#xff0c;如服务器&#xff0c;⼤部分都遵守冯诺依曼体系。 内存是CPU和外设之间的一个巨大的缓存&#xff01; 截⾄⽬前&#xff0c;我们…

Java面试八股—Redis篇

一、Redis的使用场景 &#xff08;一&#xff09;缓存 1.Redis使用场景缓存 场景&#xff1a;缓存热点数据&#xff08;如用户信息、商品详情&#xff09;&#xff0c;减少数据库访问压力&#xff0c;提升响应速度。 2.缓存穿透 正常的访问是&#xff1a;根据ID查询文章&…

Web后端开发之Maven

Maven Mven是apache旗下的一个开源项目&#xff0c;用来管理和构建java项目的工具。 通过一小段描述信息来管理项目。 Maven的作用 1.依赖管理&#xff1a;方便快捷的管理项目依赖的资源&#xff08;jar包&#xff09;&#xff0c;避免版本冲突问题 以前用某个jar包需要下载…

there are no enabled repos

我做了两个操作 第一个操作&#xff1a; 1.先在本地电脑&#xff0c;也就是在我们电脑的桌面上下载 https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo 2.在CentOS 创建etc文件夹 3在etc文件夹内创建yum.repos.d文件夹 4.将下载好的repo 黏贴到yum.repos.d…