用idea创建项目,默认是单模块项目的。如果一个项目比较大,包含多个子系统,可能会有一些公共的东西,独立出来,在几个子系统中使用。这时候应该用多模块(Module)项目,所有子系统,以及公共模块,都在一个项目(Project)里面。
我昨天就有这么一个需要,有个项目创建之初,只是一个demo,没有考虑这么多,出来就是一个单模块项目。后来合同落地,demo就顺理成章转变成真正的项目。这是一个演化型原型。考虑到以后可能会有扩展,所以应该改造成多模块项目。这种工作早做早超生,所以趁现在代码还不多,动手改造。整个过程下来,还是走了不少弯路,费了一些功夫。其实最省事的做法,就是项目创建之初就按照多模块项目来规划、建造。
我没有找到省事、轻便的改造方法。改造过程记录如下:
一、创建一个空项目,作为总的项目
然后删掉一些在本系统里没必要的东西,只剩下:pom.xml,*.iml,.idea。
参考文章:
SpringBoot - 多模块项目的搭建教程(附详细过程样例)
二、添加模块(Module)
其实就是要将现有的项目当成模块添加进去。首先也是添加一个空的模块。注意我们做的是一个WEB项目,需要选 Spring Initializr 支持。
创建之后,将原项目的src拷贝回来,覆盖。
覆盖之后,应当修改包路径。比如原项目的包路径:com.abc.prj,假设com.abc.prj是总项目的包名,原项目包名要改成 com.abc.prj.prj-web,那这里就要做相应修改。我用了最笨的字符替换。同时记得文件夹也要做相关调整。
三、修改总项目与模块的pom.xml
具体可参考拙作 spring boot多模块项目中的pom.xml