前言:在活动类型的项目中,每新加一个活动,都会往项目中增加一些一次性(或多次)的代码,随着时间的推移,项目越来越臃肿,启动越来越慢,删除无用代码时也很麻烦。
方案:将每次的活动作为一个lib模块,加入到项目中,活动结束后,lib模块代码可以保留,只需删除pom文件中对相应活动lib模块的依赖,项目启动时就不会再加载相关的代码,提高效率。(模块指IDEA中的Module)
传统方案中,一个活动的代码,会分散到各个模块,比如数据表相关的Dao类在activity-dao模块,Service接口和ServiceImpl类在activity-service模块,Controller类在activity-webaap模块,不易于归纳管理。
传统项目module目录:
——activity
————activity-common
————activity-dao
————activity-facade
————activity-service
————activity-webapp
现在,每个活动相关的代码都写在一个模块中,比如“发放现金”活动,写在lib-2019-distribute-cash模块中。
当模块数量越来越多,为了方便管理,新建一个activity-lib模块,作为所有活动模块的父模块,它的pom文件包括了所有的活动模块。
修改后,项目module目录:
——activity
————activity-common
————activity-dao
————activity-facade
————activity-service
————activity-lib
————activity-webapp
其中,activity-lib下的目录结构如下:
————activity-lib
——————lib-2019-actest
——————lib-2019-distribute-cash
——————lib-2019-lucky-draw
——————lib-…
activity-lib的pom文件如下:
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.xxx.yyy</groupId>
<artifactId>activity</artifactId>
<version>1.0.0</version>
</parent>
<groupId>com.xxx.yyy.activity.lib</groupId>
<artifactId>activity-lib</artifactId>
<packaging>pom</packaging>
<modules>
<module>lib-2019-actest</module>
<module>lib-2019-distribute-cash</module>
<module>lib-2019-lucky-draw</module>
</modules>
</project>
每个活动模块的目录结构如下:
为了能让springboot的启动类扫描到活动lib,需要在activity-webapp模块的pom文件中,添加活动模块的依赖。由于activity-lib是活动模块的父模块,只相当于一个包装纸,所以应该加的是每个实际的活动模块:
<!--accore-lib-->
<dependency>
<groupId>com.xxx.yyy.activity</groupId>
<artifactId>lib-2019-actest</artifactId>
<version>1.0.0</version>
</dependency>