maven中的属性覆盖

一、问题描述

有一个工作用需要引入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属性覆盖了,改掉本地的属性名之后,项目正常,不再报错。

 

posted @ 2024-01-22 14:35  阿瞒123  阅读(292)  评论(0编辑  收藏  举报