maven-logo-black-on-white.png
说说如何使用 Maven Archetype 来创建项目模版,从项目模块结构上,统一开发规范。
Maven Archetype
了解 maven 的同学,应该使用过如下命令来构建一个空的 maven 项目骨架
mvn archetype:generate -DgroupId=net.fabself.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
这里我们看到下面的参数就是用于指定了一种空的项目骨架原型名称
-DarchetypeArtifactId=maven-archetype-quickstart
*下面开始创建一套自定义项目骨架原型,并集成 spring-boot *
定义项目原型结构
以 trade 项目为例,建立如下模块结构:
trade
├── trade-access-launcher
├── trade-common
├── trade-dao
├── trade-schedule-launcher
├── trade-service
trade-access-launcher
springMVC 启动模块,用于服务接口发布
trade-schedule-launcher
调度服务启动模块,用于定时任务
trade-common
通用接口 & 工具模块
trade-service
业务逻辑服务层模块
trade-dao
数据库访问层模块
基于以上项目结构,开始创建项目 Archetype
建立项目
项目目录结构与文件
fabself-archetype-springboot
├── pom.xml
└── src
└── main
└── resources
├── META-INF
│ └── maven
│ └── archetype-metadata.xml
└── archetype-resources
├── __rootArtifactId__-access-launcher
│ ├── pom.xml
│ └── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── java
│ └── resources
├── __rootArtifactId__-common
│ └── pom.xml
├── __rootArtifactId__-dao
│ ├── pom.xml
│ └── src
│ ├── main
│ │ └── java
│ └── test
├── __rootArtifactId__-schedule-launcher
│ ├── pom.xml
│ └── src
│ └── main
│ └── java
├── __rootArtifactId__-service
│ ├── pom.xml
│ └── src
│ └── main
│ └── java
├── pom.xml
注意:
这里子模块目录命名以 __rootArtifactId__ 为前缀,用于动态指定 artifactId 进行替换。
根 pom.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 ">
4.0.0
net.fabself.archetype
fabself-archetype-springboot
1.0.0-SNAPSHOT
archetype-metadata.xml 文件
archetype-metadata.xml 中用于定义这个项目骨架中元数据,文件拷贝,过滤规则
整个拷贝过来,便于大家使用:
xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
name="app-root">
API
name="${rootArtifactId}-access-launcher">
src/main/java
**/*.**
src/main/resources
**/*.**
src/test/java
**/*.**
src/test/resources
**/*.**
pom.xml
name="${rootArtifactId}-schedule-launcher">
src/main/java
**/*.**
src/main/resources
**/*.**
src/test/java
**/*.**
src/test/resources
**/*.**
pom.xml
name="${rootArtifactId}-common">
src/main/java
**/*.**
src/main/resources
**/*.**
src/test/java
**/*.**
src/test/resources
**/*.**
pom.xml
name="${rootArtifactId}-dao">
src/main/java
**/*.**
src/main/resources
**/*.**
src/test/java
**/*.**
src/test/resources
**/*.**
pom.xml
name="${rootArtifactId}-service">
src/main/java
**/*.**
src/main/resources
**/*.**
src/test/java
**/*.**
src/test/resources
**/*.**
pom.xml
App.java spring-boot 启动类
package ${package};
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
*
*/
@SpringBootApplication
@EnableSwagger2
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
本地安装 & 使用
安装
mvn clean install
使用以下命令就可以开始创建自己的项目框架了
mvn archetype:generate -DarchetypeGroupId=net.fabself.archetype -DarchetypeArtifactId=fabself-archetype-springboot -DarchetypeVersion=1.0.0-SNAPSHOT -DarchetypeCatalog=local
接下来
在此框架下,可以继续扩展代码模版