关于mvn多模块的理解

疑惑

疑惑1

曾经在公司看到mvn多模块项目感觉云里雾里,下载一个项目后再下载其他几个项目,然后运行mvn install,然后再运行web项目,其中需要mvn install的项目还会依赖其他很多外部无法访问的项目。

疑惑2

看一些教程学习发现也是用到了多模块,并且一个项目会分为几十个模块都有可能,并且说划分原因也不明白。

疑惑3

为什么一个mvn项目还要拆分为多个mvn项目,并且父项目几乎不写任何代码,并且打包的时候也是不明不白?该如何打包?如何部署呢?

解惑

参考连接

  1. 狂神说sprin cloud
  2. Maven最佳实践:划分模块

引用

方便重用,如果你有一个新的swing项目需要用到app-dao和app-service,添加对它们的依赖即可,你不再需要去依赖一个WAR。而有些模块,如app-util,完全可以渐渐进化成公司的一份基础工具类库,供所有项目使用。这是模块化最重要的一个目的。
由于你现在划分了模块,每个模块的配置都在各自的pom.xml里,不用再到一个混乱的纷繁复杂的总的POM中寻找自己的配置。
如果你只是在app-dao上工作,你不再需要build整个项目,只要在app-dao目录运行mvn命令进行build即可,这样可以节省时间,尤其是当项目越来越复杂,build越来越耗时后。
某些模块,如app-util被所有人依赖,但你不想给所有人修改,现在你完全可以从这个项目结构出来,做成另外一个项目,svn只给特定的人访问,但仍提供jar给别人使用。
多模块的Maven项目结构支持一些Maven的更有趣的特性(如DepencencyManagement),这留作以后讨论。
--------------- Maven最佳实践:划分模块

今天看狂神的课加上搜索到这篇优秀的文章才明白为什么,其实就像mvc这种设计模式一样,但是类似于mvc的升级版。

如果一个项目越来越大,那么打包的时间就会越来越就,依赖的库也会越来越多甚至因为版本升级导致存在多个不同的依赖库。

如果项目通过mvn多模块开发,则可以调试编写指定的代码只需要运行本模块的代码即可,无需启动整个项目。

如果需要创建新项目,但是有很多代码在老项目的util中,则可以直接引入这个util库直接来使用。

个人理解:就像微服务开发那样项目拆分为订单、用户等服务一样可以分别去开发;多模块也是可以划分到不同小组内去让不同的人去开发,实现 “高内聚,低耦合”。

posted @ 2022-07-12 00:37  夏秋初  阅读(195)  评论(0编辑  收藏  举报