千家信息网

IDEA多module项目maven依赖的示例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关IDEA多module项目maven依赖的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。不管eclipse有没有被被时代抛弃,反
千家信息网最后更新 2026年11月01日IDEA多module项目maven依赖的示例分析

这篇文章将为大家详细讲解有关IDEA多module项目maven依赖的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

不管eclipse有没有被被时代抛弃,反正是被我抛弃了,因为IDEA是真的好用

现在公司的项目基本都是基于maven的多module项目,controller,service,model,dao等都被分成了不同的module,这样做当然也是为了解耦。

这些module可根据需要在pom.xml配置来打成war包或者jar包

jar

web主项目设置packaging级别为war,dao、model这些module设置packaging级别为jar。

module之间可以通过module自己的pom.xml来进行相互引用或依赖,如:

      cn.com.autohome.mall      mall-common              cn.com.autohome.mall      mall-api-model    

这样在 File -> project structure 下,选中主web项目

从上面的截图可以看出来依赖的第三方jar和依赖项目子module的区别。

maven在执行install,packaging是jar的会被打成jar放在target目录下,packaging是war的会被打成war放在target目录下。
另外两个target目录会有一点区别,war的target目录会多出来一个和module同名的文件夹,这个文件夹和war解压后完全一致。

所有依赖的jar(包括依赖的module,被打成jar)都会被放lib下
这样在部署的时候,只需要部署相应的war即可。

关于Maven pom.xml中的元素modules、parent、properties以及import

多个module不需要分别执行mvn命令,可以使用聚合(aggregator)来一次构建全部模块

modules

在父pom.xml中通过

        mall-common   mall-api-model 

来引用所有需要构建的子模块

parent

继承,和java中的继承相当,作用就是复用

场景

若每个子模块都都用的了spring,那么我们是不是每个子模块都需要单独配置spring依赖了?这么做是可以的,但是我们有更优的做法,那就是继承,用parent来实现。

实现

父(account-aggregator)pom.xml

      mall-common  mall-api-model             org.springframework    spring-core    4.0.2.RELEASE     ······       junit   junit   4.7   test   

子pom.xml

  xx.xx.xx  aggregator  1.0.0-SNAPSHOT  ../pom.xml         javax.mail   mail   1.4.3       com.icegreen   greenmail   1.4.1   test   

依赖管理

继承可以消除重复,那是不是就没有问题了? 答案是存在问题,假设将来需要添加一个新的子模块util,只是提供一些简单的帮助工具,不需要依赖spring、junit,那么继承后就依赖上了,有没有什么办法了?
有,maven已经替我们想到了,那就是dependencyManagement元素,既能让子模块继承到父模块的依赖配置,又能保证子模块依赖使用的灵活性。在dependencyManagement元素下得依赖声明不会引入实际的依赖,不过它能够约束dependencies下的依赖使用。

在父pom.xml中配置dependencyManagement元素

     mall-common  mall-api-model                 org.springframework    spring-core    4.0.2.RELEASE    ······  

子pom.xml

        org.springframework    spring-core         org.springframework    spring-beans        org.springframework    spring-context        org.springframework    spring-context-support            junit   junit        org.springframework    spring-jdbc    4.0.2.RELEASE        com.alibaba    druid    1.0.16   

使用这种依赖管理机制似乎不能减少太多的POM配置,就少了version(junit还少了个scope),感觉没啥作用呀;其实作用还是挺大的,父POM使用dependencyManagement能够统一项目范围中依赖的版本,当依赖版本在父POM中声明后,子模块在使用依赖的时候就无须声明版本,也就不会发生多个子模块使用版本不一致的情况,帮助降低依赖冲突的几率。如果子模块不声明依赖的使用,即使该依赖在父POM中的dependencyManagement中声明了,也不会产生任何效果。

关于"IDEA多module项目maven依赖的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

模块 项目 配置 元素 版本 目录 作用 就是 篇文章 帮助 示例 分析 一致 个子 多个 文件 文件夹 时候 更多 级别 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳九邦互联网科技有限公司 今日互联网科技 互联网科技集团 朗涯互联网科技 百单互联网科技有限公司 互联网科技论坛 一五八零互联网科技 上海亿帐通互联网科技 互联网 科技服务平台 中正互联网科技招聘 哈尔滨秒房互联网科技有限公司 中国最先进互联网科技公司 上海电发互联网科技有限公司 开启互联网科技时代小说 现代科技和互联网有关系吗 贵州叶脉互联网科技有限公司所属行业 南通创西澳互联网科技有限公司 工业互联网科技创业 互联网界的黑科技 科技互联网专业工作会议发言稿 北京互联网科技 卓越科技互联网 招聘 海南科技产业互联网平台 金融科技与互联网金融相同和不同 受益于互联网科技的高速发展 语蝶互联网科技有限公司 玉溪新华互联网科技好不好 下一代互联网重大应用科技园 中国科技和美国互联网 银川新华互联网科技学校原画
0