web項目打包后依賴module是如何存在的

为什么写这个问题

今天在做架构设计时,出现了一个疑问,参考项目结构

这是一个工程下的两个module,其中common-model是公共model类,device-manage是一个业务模块,可以单独发布,后续还会有order-manage业务模块。他们都会共用common-model模块中的类。

这块产生一个疑问,当我发布 device-manage模块时,common-model中的类是都跟着device-manage模块一同发布,还是仅发布跟device-manage模块有关的类呢?带着这个疑问,做一个测试。

需要知道的

我使用的是idea编辑器,使用maven管理工程。当在maven的pom文件中没有如下声明时,

<packaging>war</packaging>

会默认打包为jar包。就是说maven执行package命令,默认打包成jar,

只有声明为war时,才会发布成war包,

war包是放在tomcat目录下用于发布web项目,jar包是供其他模块调用的。

知道了这些后我们就可以看下上边的工程结构

common-model是供其他模块调用的,保证是打包成jar的形式

device-manage是需要发布的web应用程序,所以是打包成war的形式。

测试

通过上边的分析,现将两个模块分别设置为jar和war的形式。

然后通过maven package命令 对两个模块分别打包。

查看device-manage模块下target文件夹,发现common-model是以jar的形式存在于device-manage模块下的lib目录中。

查看common-model.jar的目录发现,所有的类都被打包进去了。

看来自己想的太多了,现有的打包方式没那么智能。

虽然这块是全部打包了,但影响不大,无非就是多占用一点空间,虚拟机用到哪些类才会加载哪些类。不会影响性能。

当然这里还有一点需要注意,就是common-model依赖的所有jar包,都会被打包到device-manage模块下lib目录里。

总结

这篇文章算是对自己疑问的一个测试吧。所以说,这个公共model模块,可以把所有业务模块的model放在这里。不影响性能。

为了方便区分业务,可以把各个业务的model按照文件夹存放。当然,也可以只拎出公共model,非公共model都放在各自的业务模块中。这有一个缺点,就是假如后期有业务变更,还需将model再拎出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值