一、问题描述
有一个工作用有一个需求需要引入ews-java-api 来发送邮件
<dependency>
<groupId>com.microsoft.ews-java-api</groupId>
<artifactId>ews-java-api</artifactId>
<version>2.0</version>
</dependency>
引入这个jar包之后一直有一个报错
Failure to find org.apache.httpcomponents:httpclient:jar:3.1
in https://xxxx.xxxx.com/artifactory/hr-maven-group-hz was cached in the local repository,
resolution will not be reattempted until the update interval of central has elapsed or updates are forced
Try to run Maven import with -U flag (force update snapshots)
报错信息显示是无法找到 org.apache.httpcomponents:httpclient:jar:3.1 这个jar包。
在我的项目中并没有引入这个jar包,但是在 com.microsoft.ews-java-api:ews-java-api:2.0 中间接的依赖了 org.apache.httpcomponents:httpclient:jar:4.4.1
二、造成原因
在我的项目中并没有直接引用org.apache.httpcomponents:httpclient:jar ,而间接引入的版本也是不对的,所以就在本地的项目中全局搜索3.1.
最后发现在本地的项目中定义了一个属性,这个属性的值是3.1
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<skipTests>true</skipTests>
<httpclient.version>3.1</httpclient.version>
</properties>
而 引入的 com.microsoft.ews-java-api 的jar包中也同样的定义了一个httpclient.version 属性。这个属性就是用来表示org.apache.httpcomponents:httpclient:jar包的版本的。
因此判断是本地的httpclient.version把引入的jar包中定义的httpclient.version属性覆盖了,改掉本地的属性名之后,项目正常,不再报错。
标签:java,覆盖,jar,maven,api,ews,属性,httpclient From: https://www.cnblogs.com/cplinux/p/17979990