# Maven多模块版本

--- 

maven多模块架构有什么优点？
> 相比于单体项目，maven多模块架构可以将项目中不同业务划分成N个模块，每个模块之间职责清晰，互不干扰，
> 整体形成一个可拔插的架构，让代码更好的践行“高内聚、低耦合”的思想，大大提高了架构的可维护性、可扩展性



### 项目架构

**maven多模块版与单体版代码大体无异，其架构为：**

- **`sp-com`**：父模块
	- **`sp-core`**：核心模块
	- **`sp-admin`**：后台管理相关接口代码
	- **`sp-start`**：启动类模块(整个项目由此启动) 
	- **`sp-more`**：其它模块


**注意事项**

- `sp-core`项目核心模块，其它所有模块都引用这个模块，公共代码都放到这个模块 
- `sp-admin`、`sp-more`等其它自建模块必须依赖`sp-core`核心模块
- `sp-start`是启动模块，此模块依赖其它所有模块 
- 自建模块，可仿照既有格式，如`sp-more`一样新建出`com.pj.project`包来存放代码
- 如何快速创建子模块？拿一个现有模块复制一份，然后删掉ide配置并改一下`pom.xml`项目名字，并配置`父pom.xml`与`start模块pom.xml`，在ide里重新构建项目即可
- 如果开发中一个`表模块`不知道放到哪个模块为好，就放到`sp-more`里，如果该`表模块`需要被其它模块依赖，则放到`sp-core`里
- 模块之间禁止循环依赖！



**模块依赖图示例**

![模块依赖图](./../static/com-case.png)

如无必要，请勿改变项目依赖结构 




### 打包步骤
maven多模块打包部署，与单体项目稍微有些不同

1. 在父pom.xml所在文件夹执行cmd命令: `mvn package`
2. 打好包后，进入`sp-start`文件夹的`target`目录下，该目录可以看到`sp-start-0.0.1-SNAPSHOT.jar`与`lib\`依赖目录
3. 此两个文件便是打包后的所有文件，按照单体模式的步骤将此部署到服务器即可，其它的模块不用管


