maven父子工程
父工程中并没有实质性的内容,所有的jar包都在里面,也就是说父工程只需要管理jar包即可,不参与任何逻辑开发。在父工程中有。很多的子模块,每一个子模块都代表了不同的包而且父工程中的所有jar包都会被子工程所继承。
下面是创建maven项目父子工程的步骤:
1.首先new一个新maven项目,不使用模板:




2.进入到新的maven项目中将src删除,然后新建子模块:

新建子模块:



创建好后是这样:

然后按照同样的步骤将所需要用的子模块全部创建好:

我只创建了最基本的几个子模块,以后可以根据需要创建controller,kernel等模块。
4. 创建完之后可以看到父工程的pom变成了下图这样

可以看到多了一个 packaging标签,里边加了个pom代表这是父工程,models里的便是父工程下边的各个子模块。
再看子模块的pom中多了一段依赖,这代表的是是属于哪一个父工程

5.接下来就是导jar包的问题,上边已经说过父工程只负责管理jar包,子工程会继承父工程的所有jar包,但是有的子工程不需要jar包或者不需要那么多jar包,例如model,里边放的都是实体类,用不上jar包,但是作为子工程他又不得不继承来自父工程的jar包,这就导致了jar包冗余,影响项目的运行速度。因此在给父工程导jar包时需要用到 <denpencyManagement>标签,被<depencyManagement>标签所控制的jar包不会被子工程所继承,如果子工程需要,可以重写父工程中的jar包,并且不需要携带版本号,如果不省略版本号,则jar包会从Maven中下载,并不再是重写父工程的jar包。
父工程的jar包,根据需要自行导入

子工程根据需要重写父类的jar包,不需要携带版本号

6.一旦开始使用分模块开发,之前的所有包都被分成了一个一个的子模块,如果我们还像以前哪样去引用某一个包的支持就会出现找不到的情况 例如我的mapper想要引用model里的user实体,但是却找不到如下:

可以看到没导入这个选项,却有一个添加依赖的选项,这也接下来要说的,不同模块之间想相互引用需要用到工程依赖,具体实现是在pom里添加相应的依赖 如下:

这样就能引用model里的实体类了

一旦使用了工程依赖,就会出现层级依赖,即如果你的mapper添加了model的依赖,service添加了mapper依赖
那么service依然可以实现对model的引用,jar包也同样,上级引用过的jar包,下级就可以不需要再重写。

浙公网安备 33010602011771号