IDEA - 调试Maven中的某一个dependency + 多module联调

回到顶部(go to top)

情景

项目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

 

 

 

回到顶部(go to top)

易错点

关于递归引入dependency

  1. maven会自动递归的帮你include所有dependency, 以及dependency的子dependency...一直这么递归下去。因此当你在A 的pom.xml里面include B, 那个B的dependency (C,D E)会自动include,不必再显示引入。
  2. 可一旦你在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必须相同

 关于reimport后,引用关系消失

按照本篇文章引入module, 一旦reimport maven,或者自己修改了pom内容引发reimport,都会导致module引用消失,需要重新建立。

 

回到顶部(go to top)

步骤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>

 

 

回到顶部(go to top)

步骤2: Inlcude B module 的源代码到A module所在的项目中

步骤2.1: include B module的源码到A module的项目中

 

 

 

找到带有pom.xml的父目录

 

 

 

 

 一路默认点击next

 

 

 

 

步骤2.2: 将B module设置为A module的dependency

 

 

 

 

 

 

回到顶部(go to top)

 参考

IntelliJ IDEA打开多个Maven的module且相互调用代码

如何在Intellij IDEA 一个module 导入另一个module

Maven聚合项目-IDEA-各模块间不能引用问题的解决方法

 

posted on   frank_cui  阅读(3759)  评论(0编辑  收藏  举报

编辑推荐:
· 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定义配置
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

levels of contents
点击右上角即可分享
微信分享提示