IDEA - 调试Maven中的某一个dependency + 多module联调
情景
项目A 可以local run,在A 的pom文件里,你想local debug 其中一个dependency B 的具体逻辑 (B 的源代码你也有), 但是B 同时也依赖了别的dependency, 例如 C,D,E。你需要做:
- 步骤1:从A的pom.xml里面注释掉B / 从别的dependency里 exclude掉B.>>> 具体项目中,B可能是单独的依赖,也可能是其他依赖的子依赖
- 步骤2:inlcude B module 的源代码到A module所在的项目中.
- 步骤3:在A的pom.xml里,引入原本B pom.xml里面的dependency,例如 C,D E
易错点
关于递归引入dependency
- maven会自动递归的帮你include所有dependency, 以及dependency的子dependency...一直这么递归下去。因此当你在A 的pom.xml里面include B, 那个B的dependency (C,D E)会自动include,不必再显示引入。
- 可一旦你在A的pom.xml exclude B,那么B的dependency (C,D E)也就不存在了。这时候你通过步骤2,把B的module作为A 的dependency,是不会递归的include B的dependency (C,D E)。因此,你需要手动的在A pom.xml里面引入 C,D E。如果不引入(C,D E):
- 编译阶段不会报错,是因为 A 没有直接使用(C,D E)的class.但是在运行阶段,会报错
- 编译阶段会报错,是因为 A 直接使用(C,D E)的class.
关于groupId必须相同
- 联调的module需要有相同的groupId, 参考: IntelliJ IDEA打开多个Maven的module且相互调用代码
关于reimport后,引用关系消失
按照本篇文章引入module, 一旦reimport maven,或者自己修改了pom内容引发reimport,都会导致module引用消失,需要重新建立。
步骤1: 在A的pom.xml 里面 exclude B 的dependency
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | < dependency > < groupId >com.unity.risk</ groupId > < artifactId >UnityRisk-RiskEngine</ artifactId > < version >${RiskEngineVersion}</ version > < type >jar</ type > < scope >compile</ scope > <!--exclude B--> < exclusions > < exclusion > < groupId >B-groupId</ groupId > < artifactId >B-artifactId</ artifactId > </ exclusion > </ exclusions > </ dependency > |
步骤2: Inlcude B module 的源代码到A module所在的项目中
步骤2.1: include B module的源码到A module的项目中
找到带有pom.xml的父目录
一路默认点击next
步骤2.2: 将B module设置为A module的dependency
参考
IntelliJ IDEA打开多个Maven的module且相互调用代码
如何在Intellij IDEA 一个module 导入另一个module
Maven聚合项目-IDEA-各模块间不能引用问题的解决方法
分类:
IDEA
posted on 2020-01-03 14:03 frank_cui 阅读(3759) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2019-01-03 Spring Aware接口
2019-01-03 Spring Bean生命周期
2019-01-03 Spring Bean定义配置