下面的依赖项会拉取另一个依赖项:httpcore.4.1.4
。
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.2</version>
<scope>compile</scope>
</dependency>
这样做会在部署期间抛出
ClassDefNotFound
。
但是,使用
httpcore.4.2
,一切都能正常工作。我甚至直接将这两个依赖项添加到我的pom文件中:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.2</version>
<scope>compile</scope>
</dependency>
这并没有改变任何事情,我仍旧面临着同样的问题: Maven将httpcore.4.2
降级为httpcore.4.1.2
。
dependencyManagement
看起来像这样:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.2</version>
<scope>compile</scope>
</dependency>
</dependencies>
</dependencyManagement>
$ mvn dependency:tree -Dverbose -Dincludes=httpcore
,它将显示依赖树中所有版本的httpcore
,包括那些被省略的版本。它会告诉你为什么会得到版本号为 "4.1.4" 的信息以及它所在的位置。 - Hong