最近用Jenkins自动化打包时,一直报错,以前都是正常的,如图:

这个cannot find symbol错误大概率是因为package not exist这个问题导致的,那么具体先解决package not exist问题。
首先本地肯定是能打包的,就是用平台自动打包就出现了这个问题,询问了平台组,说是jar包冲突,但是这个错误一看就不像是冲突。由于当时急着打包所以采取了野蛮处理,因为这个jsonutil没有一个地方用到,所以把这个工具类给删了,于是成功打包。
当然肯定不能一直这么搞,假如业务有很多地方用到了这个工具类呢,那么就是灾难级的改动了。
解决办法:
pom文件其实并没有引用org.codehaus.jackson这个包,而是引用了org.restlet.ext.jackson这个包。由于Hierarchical dependence,所以也能下载到org.codehaus.jackson。于是我在pom.xml中添加了org.codehaus.jackson,然后尝试打包,成功。
后来发现是本地与平台的setting.xml文件的镜像仓库地址不同,导致下载的jar包pom文件不一致。
那为什么本地能打包,放到平台上就不能打包了?还是因为两边的maven库环境不一样,本地仓库是很久以前下的包,一直也没更新过,所以有这个jar包和相关层级依赖,再来看看现在平台的maven库有没有这个包:

看到了吧,什么都没有,自然就是package not exist了。
|