使用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发布到私服,统一团队的编码风格。