场景
- 按业务域分割的多模块maven项目
- 每个业务域有api&impl两个模块
- impl模块的.pom文件里面依赖了api模块
- 由于其他人负责的模块代码有bug,该工程尚未成功执行过mvn clean compile指令
现象
使用
mvn clean compile -Dmaven.test.skip=true -pl {域-impl}
命令对该impl模块进行单独编译,报错:部分在impl代码中使用的,定义在api模块的pojo 找不到符号,代码文件中未提示cannot resolve symbol.
原因
mvn compile -pl {} 命令会找.pom中依赖的jar包进行导入,导入后compile. 由于该项目未曾成功mvn compile过,因此其所依赖的api模块在本地并没有jar包能引用,当然找不到其中相应的pojo
解决方案
切换进impl所依赖的api模块中,对该模块单独进行install操作,打出jar包到本地,然后再回根目录执行 mvn clean compile -Dmaven.test.skip=true -pl {域-impl} ,本次执行成功。