现象:

今天下午与同事在同一项目分支上进行开发,因项目中使用到aliyun-sdk-oss-2.4.0.jar,而目前的工程使用了与Apache httpclient 4.4.1冲突的Apache httpclient与commons-httpclient。本地通过exclusion排除后编译正常,同事编译不通过,为aliyun-sdk-oss-2.4.0.jar依赖未成功传递。

解决过程:

  1. 通过在项目中运行:mvn dependency:tree查看jar依赖关系树。发现本地环境aliyun-sdk-oss-2.4.0.jar的依赖正常。同事机器aliyun-sdk-oss-2.4.0.jar不能引用任何相关依赖jar。后经发现是因为私服上该aliyun-sdk-oss-2.4.0.jar版本的jar下载不完整导致。删除私服上的aliyun-sdk-oss-2.4.0整个目录,也删除本地环境.m2下的aliyun-sdk-oss-2.4.0,然后编译项目,使私服再从中央仓库获取。
  2. 步骤1完成后,在同事机器发现aliyun-sdk-oss-2.4.0.jar依赖的httpcomponents-client-4.4.1.jar依赖成功传递,但httpcomponents-client-4.4.1.jar依赖的httpcomponents-core-4.4.1.jar未成功传递,且私服上不存在httpcomponents-core-4.4.1.jar。后确认因:(a).httpcomponents-client-4.4.1.jar为手动上传,使用的是私服自动生成的pom,自动生成的pom不含任何依赖,所以未传递依赖。(b).httpcomponents-core-4.4.1.jar不存在因网络原因导致,没有从中央仓库成功下载。处理过程:删除私服上现有的httpcomponents-client-4.4.1,从本机手动上传httpcomponents-client-4.4.1.jar与httpcomponents-core-4.4.1.jar,在3rd party中上传每个jar时,GAV Definition请选择From POM,然后点击Select POM to Upload选择上传的pom,然后再选择上传的jar。

    至此问题得以解决,之前上传私服jar时,未考虑到上传pom文件,这次处理后发现jar相关的pom上传同样重要。