Maven自定义脚手架(多module模块)+自定义参数

news/2025/2/11 22:47:43/

脚手架

视频教程:
Maven保姆级教程

脚手架是一个项目模板,包含常用的工程结构、代码。

1 自定义脚手架

脚手架创建的步骤如下,先创建一个工程,把常用的代码写好,进入工程根目录,进行如下操作:

打包模板
mvn archetype:create-from-project

进入模板目录,修改文件配置
cd ./target/generated-sources/archetype

如果想让文件中的替换变量生效,需要先修改META-INF.maven/archetype-metadata.xml
将对应目录或文件增加 filtered=“true”
再使用变量替换对应文件内容

部署本地
mvn install

上传仓库
mvn deploy

下面用一个多模块的项目做演示,包含xml文件,yml文件,和其他文件。

在这里插入图片描述

在这里插入图片描述

我们要创建一个脚手架,使用这个脚手架创建工程时,xxx要替换成指定值。

在根目录下创建archetype.properties文件

在这里插入图片描述

archetype.groupId=com.test.maven
archetype.artifactId=archetype-test
archetype.version=1.0-SNAPSHOT
excludePatterns=**/.idea/**,**/*.iml

archetype-test(父工程)的pom中加入:

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-archetype-plugin</artifactId><version>3.2.0</version></plugin></plugins>
</build>

进入项目根目录,执行mvn archetype:create-from-project

在这里插入图片描述

执行成功后,跟目录下会有一个target文件夹生成

在这里插入图片描述

接着要替换占位符,比如每个项目名字不一样,xxx要替换成项目名,每个项目package前缀不一样,也要替换;

常用占位符如下:

VariableMeaning
_rootArtifactId_做文件夹名替换用,例如_rootArtifactId_-dao, 占位符来动态获取父工程的ArtifactId
${rootArtifactId}它保存用户输入的值作为项目名(maven在用户运行原型时在提示符中询问为artifactid:的值)
${artifactId}如果您的项目由一个模块组成,则此变量的值将与${rootArtifactId}相同,但如果项目包含多个模块,则此变量将由每个模块文件夹中的模块名替换
`${package}用户为项目提供的包,也在用户运行原型时由maven提示
${packageInPathFormat}与${package}变量的值相同,但将“.”替换为字符“/”,例如:,对于包com.foo.bar,此变量为com/foo/bar
${groupId}用户为项目提供的groupid,在用户运行原型时由maven提示
${version}版本号

首先替换module的名字,把xxx替换成_rootArtifactId_,注意两边是两个下划线

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kg2ParTl-1692174116914)(/image-20230815094204095.png)]

接着依次点开每一个编译后的文件,查看一下有没有没替换的占位符,正常编译好的,动态部分都会替换掉,如下图:

在这里插入图片描述

但是也会有一些替换错的,有时候package前缀和groupId一样时,一些package会被替换成groupId,我们要手动修正它;

当前项目里,这个application.yml就没有被替换掉

在这里插入图片描述

改成如下形式:

在这里插入图片描述

接着是核心文件:archetype-metadata.xml

在这里插入图片描述

找到modules节点,每个modules都要替换,

module属性介绍:

  • id:子模块工程的artifactId

  • dir:子模块工程源文件在archetype-resources里对应的directory

  • name :子模块的名字.,可定制化自己的服务模块。

在这里插入图片描述

替换成

在这里插入图片描述

如果有其他自定义参数,比如项目中的xxx和类名中的Xxx需要替换,可以自定义参数,自定义参数在archetype-metadata.xml里加入<requiredProperties>

key是属性名,defaultValue时默认名

 <!--属性变量定义--><requiredProperties><requiredProperty key="appName"><defaultValue>demo</defaultValue></requiredProperty><requiredProperty key="appNameCap"><defaultValue>Demo</defaultValue></requiredProperty></requiredProperties>

去替换文件中的内容,路径中的参数是双下划线_参数名_,文件内部的参数是${参数名}

在这里插入图片描述

一般xml文件、java文件模板会自动替换占位符,另外有一些自定义文件,模板不会识别,比如sh脚本、md文件等,我们以Dockerfile为例(随便自己定义个文件也行),在archetype-metadata.xml写<fileSets>

    <fileSets><!-- 写进模板,但不替换的占位符的,不设置 filtered="true"即可--><!-- 写进模板,要替换的占位符的,filtered="true"--><fileSet encoding="UTF-8" filtered="true"><directory></directory><includes><include>Dockerfile</include><include>README.md</include></includes></fileSet></fileSets>

每一个module下面如果有默认不识别的文件也要单独配置:

在这里插入图片描述

去替换文件中的内容:

在这里插入图片描述

注意检查文件,没有遗漏之后可以安装脚手架了,上面示例只是替换了一些常用文件,并没有替换所有,根据自己需求,替换所有需要编辑的文件。
进入target\generated-sources\archetype下,执行 mvn install

注:如果有自定义参数,需要在test/resources/projects/archetype.properties里配置自定义参数

在这里插入图片描述

在这里插入图片描述

执行成功后,在我们本地的maven仓库里会有一个archetype-catalog.xml文件

打开这个文件就能看到已经安装的脚手架信息:

在这里插入图片描述

2 使用脚手架

2.1 命令

在工作区里执行:mvn archetype:generate -DappName=abc -DappNameCap=Abc

其中-D后面接的时自定义参数,也可以接默认参数,如-DgroupId

如果你安装过多个脚手架,会提示一个脚手架列表,选择脚手架编号:

在这里插入图片描述

会提示我们让我们输入各项参数,

确认按Y或者回车;

输入其他字母,重新输入参数;

按ctrl+c终止创建工程

在这里插入图片描述

在这里插入图片描述

2.2 idea

或者直接用idea

在这里插入图片描述

旧版

在这里插入图片描述

2.3 Eclipse

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

项目就创建好了

在这里插入图片描述

删除脚手架只要删除archetype-catalog.xml对应的节点就可以了


http://www.ppmy.cn/news/1038383.html

相关文章

python自动化办公的一些小工具,函数组件

上一篇文章写了怎么自动化写一个月报&#xff0c;其中有很多很好用的函数组件&#xff0c;都被我封装为了函数&#xff0c;功能很好用。下面一一介绍&#xff1a; 1.添加汇总函数 输入一个pandas的数据框&#xff0c;就会返回一个加了汇总行的数据框。 def add_summary_row(d…

oauth2-resource-server授权配置介绍

1、背景 当了解这篇文章授权服务器后&#xff0c;对授权服务器有一定的认识&#xff0c;那么授权服务器生成token后&#xff0c;该怎么用呢&#xff0c;这就涉及到资源服务器&#xff0c;现在给大家简单介绍实现过程。 2、方案 <dependency><groupId>org.springf…

shell脚本之函数及数组

shell脚本之函数及数组 一函数1.1函数的作用1.2函数的基本格式1.3函数的注意事项1.4函数调用的方法1.5函数的返回值1.6函数的传参1.7在外部调用函数1.8函数变量的作用范围1.9函数的递归 二.数组2.1shell数组的定义2.2定义属组的方式2.3数组的数据类型2.4获取数组的数据列表2.5获…

【100天精通python】Day38:GUI界面编程_PyQT从入门到实战(中)

目录 专栏导读 4 数据库操作 4.1 连接数据库 4.2 执行 SQL 查询和更新&#xff1a; 4.3 使用模型和视图显示数据 5 多线程编程 5.1 多线程编程的概念和优势 5.2 在 PyQt 中使用多线程 5.3 处理多线程间的同步和通信问题 5.3.1 信号槽机制 5.3.2 线程安全的数据访问 Q…

稳如磐石!亿级别MySQL大表迁移的解密

MySQL 作为当前应用最广泛的开源关系型数据库之一&#xff0c;具有高性能、稳定性和易用性等特性&#xff0c;是许多网站、应用和商业产品的主要数据存储。在一些场景中&#xff0c;如果出现单表行数上亿的情况&#xff0c;就可能需要开发和 DBA 对大表进行优化&#xff1a;分表…

【Ubuntu】简洁高效企业级日志平台后起之秀Graylog

简介 Graylog 是一个用于集中式日志管理的开源平台。在现代数据驱动的环境中&#xff0c;我们需要处理来自各种设备、应用程序和操作系统的大量数据。Graylog提供了一种方法来聚合、组织和理解所有这些数据。它的核心功能包括流式标记、实时搜索、仪表板可视化、告警触发、内容…

华为OD机试真题【字母组合】

1、题目描述 【字母组合】 数字0、1、2、3、4、5、6、7、8、9分别关联 a~z 26个英文字母。 0 关联 “a”,”b”,”c” 1 关联 “d”,”e”,”f” 2 关联 “g”,”h”,”i” 3 关联 “j”,”k”,”l” 4 关联 “m”,”n”,”o” 5 关联 “p”,”q”,”r” 6 关联 “s”,”t” 7…

搭建Web服务器并用cpolar发布至公网访问

本地电脑搭建Web服务器并用cpolar发布至公网访问 文章目录 本地电脑搭建Web服务器并用cpolar发布至公网访问前言1. 首先在电脑安装PHPStudy、WordPress、cpolar2. 安装cpolar&#xff0c;进入Web-UI界面3. 安装wordpress4. 进入wordpress网页安装程序5. 利用cpolar建立的内网穿…