起因

​ 在引入一些依赖后,代码并没报错,运行后报错找不到xxx.class,大概是idea缓存/索引和maven依赖不同步,遂在网上搜到了暴力解法
即在设置中勾选Delegate IDE build/run actions to Maven选项,将IDE的构建和运行委托给maven执行,在之后引发了一系列问题。

  • ide原生编译和maven编译区别
IDEA原生编译 maven编译
编译范围 只编译你改动的文件 执行完整的Maven生命周期
是否运行测试 不运行 会运行test阶段的所有测试
速度 快(增量编译) 慢(全量构建)
适用场景 日常开发 特殊构建需求

idea的构建被托管后,每次启动项目或运行测试类的方法,甚至只是个简单的helloworld程序,都会让整个项目重新构建一遍,底下会出现build窗口,会进行漫长的build过程,且build过程中会将所有测试类中的所有测试方法全部运行一遍,运行结果打印在build窗口中,然后才开始项目运行,也就是说如果只是想运行某一个测试方法,不仅项目中所有的测试方法都会运行一遍,在run过程中该测试方法还会再运行一遍

1
2
3
4
5
6
7
8
9
10
@Test
void insertTest44() {
// 构建数据库实体类
UserDO4 userDO = UserDO4.builder()
.id(55)
.username("高松灯")
.password("123456")
.build();
userMapper.insert(userDO);
}

类似此插入方法会在数据库执行两次,导致主键冲突报错,且极难找到原因