共计 3770 个字符,预计需要花费 10 分钟才能阅读完成。
什么是 ArcheType?
Archetype 是一个 Maven 项目模板工具包。通过 Archetype 我们可以快速搭建 Maven 项目。通常我们使用 idea 创建 maven 工程的时候都会选择 Archetype 来创建项目 maven 中常用的 Archetype
- maven-archetype-quickstart
- maven-archetype-webapp
创建自定义的 Archetype 项目
一,创建一个多模块的 maven project
使用 maven 创建一个的多模块 project 作为模板项目如下:
二, 在项目根 pom 文件中添加 maven archetype 插件
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>3.0.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
三,运行项目制作模板自定义 archetype
1,创建 archetype 到本地仓库
# 到项目根目录执行命令
mvn archetype:create-from-project
此时在项目的 target 目录下生成了很多文件
2,生成 archetype 模板
## 进入 archetype 目录
cd target/generated-sources/archetype/
mvn install
## 生成 archetype-catalog.xml 文件
mvn archetype:crawl
执行以上命令后在本地仓库的根目录中会生成 archetype-catalog.xml 文件
archetype 的内容如下,其中 artifactId 和 groupId 待会我们生成的时候要用到
<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd"
xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<archetypes>
<archetype>
<groupId>com.generated.boot</groupId>
<artifactId>generated-archetype</artifactId>
<version>1.0-SNAPSHOT</version>
<description>generated</description>
</archetype>
<archetype>
<groupId>org.apache.maven.archetypes</groupId>
<artifactId>maven-archetype-quickstart</artifactId>
<version>1.1</version>
<description>quickstart</description>
</archetype>
</archetypes>
</archetype-catalog>
3,使用 archetype 模板生成我们想要的工程
mvn archetype:generate \
-DarchetypeGroupId=com.generated.boot \
-DarchetypeArtifactId=generated-archetype \
-DarchetypeVersion=1.0-SNAPSHOT \
-DarchetypeCatalog=local \
-DgroupId=com.test.user \
-DartifactId=user \
-Dversion=1.0-SNAPSHOT
-DarchetypeGroupId
:archetype-catalog.xml 中的 groupId-DarchetypeArtifactId
:archetype-catalog.xml 中的 artifactId-DarchetypeVersion
:archetype-catalog.xml 中的 version-DarchetypeCatalog
:使用模式本地和远程 -DgroupId
:需要生成 project 的 maven groupId-DartifactId
:需要生成 project 的 maven artifactId-Dversion
:需要生成 project 的 maven version
释放双手让项目跑起来
生成的项目自带 mybatis 代码生成工具,开箱即用,直接修改关键参数如:数据库,表明等及其他简单配置就可以直接生成默认的赠删改查功能,直接运行!!!直接使用!!!
1,配置代码生成器
public class Generator {public static void main(String[] args) {
//module 自己想要生成的根工程名称 本工程为 user
String module = "user";
//package name 在使用命令生成的时候指定的 -DgroupId,本案例为 com.test.user
String packageName = "com.test.user";
//author 作者名称
String author = "jour";
//database user name
String dbUserName = "root";
//database user password
String dbUserPassWord = "root";
//database
String dbDatabaseName = "user";
//table name
String tablePrefix = "user";
//database ip
String dbIpAddress = "127.0.0.1";
// 当前生成类所在的模块名称 当前生成器所在的工程的名称 本案例在 user-service 中
MyBatisTemplate.setProjectPath("user-service");
MyBatisTemplate.generator(module, tablePrefix, packageName, author, dbUserName, dbUserPassWord, dbIpAddress, dbDatabaseName);
}
}
2,配置运行测试
修改 application.yml 数据库配置添加需要使用的数据库(mysql)
spring:
application:
name: user
datasource:
username: root
url: jdbc:mysql://127.0.0.1:3306/user?useUnicode=true
password: root
修改启动类的 MapperScan 配置 (指定 mapper 目录)
@SpringBootApplication
// 修改 value 为生成的 mapper 路径本例为:@MapperScan("com.generator.dao.mapper")
public class Main {public static void main(String[] args) {SpringApplication.run(Main.class, args);
}
}
运行 Main 启动类启动测试
@RestController
public class HelloController {
@Autowired
private UserService userService;
@GetMapping("/hello")
public Object hello() {return userService.selectById(1);
}
}
// 20190929201927
// http://localhost:9090/hello
{
"id": 1,
"userName": "jour",
"age": 11
}