前言
今天遇到一个问题,使用idea进行项目构建的时候,一直报程序包xxx.xxx不存在,费了好大功夫终于解决。原因和上次修改项目之后必须执行maven clean install才生效一样,在次记录。
一、报错记录
项目需要依赖外部的jar包,在将外部的jar包都进行了导入。
1、setting->project structure->libraries,添加新的项目库,选择Java
2、在Modules里删除报红的依赖,然后添加新的依赖:选择library,然后点击刚刚添加的库文件
点击Add Selected->Apply->OK,正常情况下就添加外部依赖成功了。
但是在进行编译的时候,报错xxx.xxx包找不到:
在pom.xml文件中添加该包对应的依赖之后,这个依赖找不到的错误不报了,但是报了其他依赖找不到的错误:
添加json的依赖包:
报另一个依赖找不到的错
二、报错解决
其实在pom.xml文件中添加了对应的依赖,该依赖不报错之后,就应该知道出现这种情况的原因了。项目的编译工作其实是maven在做,而不是由idea进行。查看settings->Build, Execution、Deployment->Build Tools->Maven->Runner
果然Delegate IDE build/run actions to Maven被勾选上了,原因就出在了这里,如果勾选上这个,会导致idea将构建和运行工作交由maven来做,而maven并没有引入这些包的依赖。
之前有一次每次在修改完项目都必须maven clean install也是一样的原因,将项目的构建和运行工作交给了maven,所以当项目发生改动时,必须执行maven clean install 来重新构建项目,改动才生效,否则重启项目,改动仍然不会生效。
总结
这是一次深刻的踩坑经历,Delegate IDE build/run actions to Maven选项一定不要轻易勾选,除非确定将项目的构建和运行工作交由maven来做。一旦勾选上,在依赖的jar包是外部jar包时,项目构建就不能通过,如果依赖的jar包由maven管理,那么在项目有改动的时候必须maven clean install才能生效。