前言
随着我们项目做的越来越多,很多项目都有相同的模块。这个时候我们需要有一套脚手架项目来帮我们完成项目的创建。剩下的可能我就只需要修改一些简单的配置即可开始开发,那么将会大大提高我们的开发效率。今天就基于springboot项目来学习下怎么利用maven archetype来快速生成工程。
实践
项目demo-a
-
现有的spring-boot 项目,比如已经做好了相关的配置,定义好了controller,service, mapper层以及application.yml等
- 项目信息:jdk:17,springboot-3.1.3.
- 工程结果如下图
- 项目简单集成了swagger并且有一个hello接口
- 运行结果
生成maven-archetype Template
- 进入项目demo-a的根目录执行命令
mvn archetype:create-from-project
模板已经生成到本地target目录。
- 进入template目录,target/generated-sources/archetype/src/main/resources
这里就是生成的好的模板,代码中已经利用占位符变量(比如包名用了${package})帮我们包名都生成好了。
可以看下RedisConfig.java这个类。
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
package ${package}.config;
public class RedisConfig {
}
DemoController.java
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
package ${package}.controller;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import ${package}.entity.RestResponse;
@RestController
@RequestMapping("/api/v1")
@Tag(description = "Demo controller for test", name = "DemoApi")
public class DemoController {
@GetMapping(value = "/hello")
public RestResponse hello() {
return RestResponse.ok("Hello, I am XYX Mirco Service");
}
}
Archetype Template 发布到本地Maven仓库
- 进入/target/generated-sources/archetype
- 运行命令
mvn install
- 查看archetype-catalog.xml
利用Maven Archetype生成新工程demo-b
- 进入新目录运行命令
mvn archetype:generate \
-DarchetypeGroupId=top.xyx0123 \
-DarchetypeArtifactId=>demo-a-archetype \
-DarchetypeVersion=0.0.1-SNAPSHOT \
-DgroupId=top.xyx0123.demob \
-DartifactId=demo-b \
-Dversion=0.0.1-SNAPSHOT
遇到提示包名提示修改或者默认。默认直接Enter
最终出现成功
- 对比demo-a和demo-b
项目demo-b测试
注意发现application.yml中是无法替换的,后面需要研究下。手动替换application.yml中的参数启动服务。
启动成功并查看swagger
接口正常调用
结束语
初步体验了利用maven-archetype的模版快速生成工程的功能。对于需要做脚手架的框架非常适合。demo代码回头在上传。
感谢大家的阅读,下次见。