前言
没有在pom文件中引入mybatis却可以用,是maven的依赖传递导致的这种奇怪现象~
一般是引用其它的依赖,这个依赖里面引用了你需要的其他依赖。记录一下具体的查看方法。
没有在pom文件中引入mybatis却可以用
1 具体问题
mybatis可以正常使用,但是在项目中所有的pom文件都没有引入mybatis
2 问题原因
因为其它依赖中也引用了,通过maven传递导致的这种奇怪显现。比如我们在项目中引入了pagehelper
<!-- pagehelper 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.boot.version}</version>
</dependency>
而pegehelper中也引入了mybatis,那么如果我们项目中不引入,也是可以的
3 排查方案
- 可以直接通过idea的右边栏点击maven的图标
- 点击搜索的图标
- 在搜索框中输入mybatis
- 然后就可以看到依赖的路径关系
4 原理分析
我们可以通过在引入依赖中添加标签,添加 provided使得引入这个模块的不会被传递
<dependency>
<groupId>com.example</groupId>
<artifactId>init-web</artifactId>
<version>1.0.0</version>
<scope>compile</scope> <!-- 默认是 compile -->
</dependency>
- compile 会被传递到其它模块
- provided 不会被传递
- test 仅测试时使用,不会被传递