maven引用本地项目编译报错

之前我们把很多共通的类提取出来然后引用maven,然后修改实体类时就不用把每个项目都修改一遍,只不过每次都要打个新的包

然后开发的时候我发现可以引用本地的项目,不用每次都更新到云上。但是这样的话切换分支的时候常常报编译错误,我之前一直以为是Deployment Assembly配置的问题,因为搞着搞着编译就通过了。但是今天不知道为什么配置了半天,甚至复制了同事的配置还是一直报编译错误,通不过mvn test。

搞了三四个小时,通过查询资料和查看项目终于发现了,原来引用本地项目实际上还是在引用本地的maven库,我们需要执行mvn install来将需要引用的项目生成jar文件。

执行mvn clean后target文件消失

maven引用本地项目编译报错

执行mvn test后生成target编译文件

maven引用本地项目编译报错

可以看到有一个sources.jar结尾的文件,我不知道这个文件的作用,但是总之是不能作为maven包引用的,如果你编译引用这个项目的项目就会报错

执行mvn install后生成可执行的jar包

maven引用本地项目编译报错

尝试对其他项目执行mvn install后发现也会生成可执行包,根据maven的配置不同会生成jar或war包

maven引用本地项目编译报错

我之前并不清楚引用本地项目的原理是什么,对这些都似懂非懂,看来其实和其他的maven项目并没有区别都是引用jar包,只是位置不同,mvn install不仅仅是打包到线上的,也可以生成本地的包。

虽然这个应该算是基本知识,但是也花了我不少的尝试与时间,搞清楚以后终于豁然开朗,哈哈哈哈哈