按照maven工程拆分和聚合的思想,看看父子工程怎么创建。
1、创建父工程
父工程只需要一个pom.xml就可以,其他都可以不要,也就是说父工程主要是用来管理我们的jar包坐标的。
新建maven项目,因为只留一个pom.xml文件,所以新建时候可以不用选择骨架。
![09456971234567c633ae80855b655a88.png](https://i-blog.csdnimg.cn/blog_migrate/07ddbf6f0ec7b2417aa84afb925b22b5.jpeg)
建好项目之后,只留pom.xml,其余的文件夹都可删掉。
![a348c92b44ac390424362c3d256c1f8d.png](https://i-blog.csdnimg.cn/blog_migrate/aeb3da8648611a5d77d880e09c2271e0.jpeg)
2、创建子模块
实际项目中可能会有很多个子模块,当然它们创建方法都是一样的。这里为了测试就建三个,就是我们的dao、service和controller模块。
2.1 dao模块
右键父工程,此时只有新建一个module。
![4acd9a07b0b122dbf5cf908b8938efba.png](https://i-blog.csdnimg.cn/blog_migrate/22babe48a76167f01a234df1a5e7b009.jpeg)
dao这个模块是不需要和页面有交互的,所以它只需要是一个java工程即可,那么新建的时候也简单一些,不用选择任何骨架。
新建完成之后,在parent工程下多了一个叫maven_dao的项目。
![164e32120aa5f6d3e202165857940fd8.png](https://i-blog.csdnimg.cn/blog_migrate/37ea50640aa84e7542e9a2c06bacdaff.jpeg)
打开dao这个模块的pom文件,会发现有一个parent标签,里面是父工程的坐标。dao模块可以复用父工程的groupId和version,但是必须有自己的artifactId。也就是说dao的坐标就是:父工程的groupId+自己的artifactId+父工程的version。
![9b3ce9f43d7a08af972203e75ea1f57b.png](https://i-blog.csdnimg.cn/blog_migrate/2a0071bf84d0202f34f66b51c09ec131.jpeg)
此时再看回父工程的pom文件:
![5a6abc65680f3b576fd18cf59949cdf9.png](https://i-blog.csdnimg.cn/blog_migrate/1309169454860536479c4dd906a6ae27.jpeg)
自动地多了一个modules标签,这代表它的子模块,也就是它现在有几个子模块都会在这里显示。
2.2 service模块
service模块同样也不用和页面交互,所以和dao同样的步骤。
![9ed28e0d2856ac0dce5114f98752fe31.png](https://i-blog.csdnimg.cn/blog_migrate/a0c745261c5def8094f51acc90f5a5e1.jpeg)
此时父工程pom文件里有了两个子模块
![51e233e9c728321173e0f1d574368818.png](https://i-blog.csdnimg.cn/blog_migrate/18ac8f2d8eef6ceeb94d1a430e0baecf.jpeg)
2.3 controller模块
最后一个模块controller,需要与页面交互,我们选择一个骨架,选择maven的webapp。
![eaa0003480639e85dc5326186eccabba.png](https://i-blog.csdnimg.cn/blog_migrate/691b89e56872230e5edb50acc85724f0.jpeg)
因为使用了骨架,pom文件里会多了很多内容,不必要的我们可以先删除掉,只留图中内容即可:
![8b42671a9092e688fe20e335e97e8b9f.png](https://i-blog.csdnimg.cn/blog_migrate/761510d13c855ce4b2886c3cbc074912.jpeg)
可以看到它的打包方式是war,先前dao和service模块都没有显示打包方式,它们默认是jar的方式。
好了,现在父子工程已经创建完成,最终的结构如下:
![fffaae9557ff87dc3706ba991941e696.png](https://i-blog.csdnimg.cn/blog_migrate/8ca437e76a7399be967c2eeb64d49fda.jpeg)
剩下的工作就是代码编写。