idea 父文件_IDEA中Maven项目父子工程依赖

本文介绍了SSM(Maven、Spring、MyBatis)整合项目的目录结构,包括父工程与子模块的配置,解决了多root现象和子模块间的依赖问题。重点讲述了如何设置打包方式、导入依赖以及解决模块间的依赖关系。此外,还分享了一个关于注解扫描报错的案例,强调了正确理解和配置父子工程的重要性。
摘要由CSDN通过智能技术生成

1.写在前面

假设一个Maven项目(这里是一个SSM整合项目)他的构造布局如下:

话不多说,直接上图:

这个项目存在父子工程(这里删掉了父工程的src文件夹,为了使项目可读性更高)

这里的子模块dao,service,web分别对象项目的MVC架构三层持久层、业务层和视图层,domain和utils分别是实体类和工具包

2.解决项目模块出现多root现象

先给出解决方法,后再研究问题原因

我们打开父工程的pom.xml,在这里添加上父子模块的配置

我们在最右侧可以看到该项目的工程结构只有一个root工程,其他都为子工程

添加完毕,自动配置,OK,问题解决

至于原因,最可能的原因就是创建父工程后,再创建子工程的时候,没有勾选继承父工程的选项,若勾选上,IDEA这个强大的IDE是会自动帮你构建完成的。

3.解决子模块之间的依赖关系

1)先说一下各模块的打包方式

我们接着看父工程的pom.xml文件,在他的最前面规定了他的打包方式,注意这里打包方式是pom方式,用在父级工程或聚合工程中。用来做jar包的版本控制。必须指明这个聚合工程的打包方式为pom

而其子模块的打包方式是我们最常用的jar方式打包

以下四个模块都是采用jar方式打包,我们可能注意到这里并没有那个web子工程,因为他特殊,并不是使用jar来打包的;

jar包中包含了你写程序的所有服务或者第三方类库,它通常是作为幕后工作者,为视图层用户与之交换数据处理的一个服务者

web模块是我们要部署到tomact上提供给客户端去访问的东东,并没有复杂业务逻辑的处理, 一个war文件可以看成一个web应用程序。与jar封装不同的是:它内聚了很多页面,如html、jsp,Servlet,js,css,icon图片文件等等,当然还包括组成web应用的其他组件,这些文件基本没有复杂业务逻辑的处理,基本上仅仅是用来当做程序的门户负责与使用者交互,仅此而已。

补充一点,pom方式打包即为pom工程,jar方式打包即为jar工程,war方式打包即为war工程,具体为什么这么打包,有什么优点,总体上来说是为了项目的前后端分离和结构清晰。

2)各个子工程之间的依赖导入问题

以web这个子工程为例,这里因为这个工程当中涉及到了dao层和service层的操作,所以导入这两个工程的依赖,其他的模块导入方式相同

这里要注意的是,在依赖导入之前,首先确定自己的各个模块的打包方式是否正确,怎么打包在上边已经有讲到,具体每个模块导入哪些依赖根据自己的业务逻辑决定

4.最后讲一个自己遇到的非常无语的问题

在我的web模块中,其中的application.xml,一直有两个错误,就是开启注解扫描,总是在这两个包给我报红,而且自己也已经导入dao模块和service模块的依赖了,仍然报红;

最后发现,真正原因是我对应的dao模块和service模块根本就没有对应的pers.pluto.dao和pers.plutoservice.impl这两个文件夹;

小结

总结原因:自己对父子工程的原理理解并不透彻,现在我个人的理解是:

父工程的存在只是单纯的为了让各个子工程之间建立一定的联系,就像他们互相导入依赖之后就可以相互调用;

在这里其实是完全拥有所导入依赖的一切,包括文件夹结构,比如dao模块中的的pers.pluto.dao,在web项目中使用(开启注解扫描),直接使用其本来的路径就可以,不用管父工程的路径;

所以我在这里直接删掉了父工程的src文件夹,为了避免误解,让结构更清晰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值