覆盖maven中第三方jar的依赖关系

像这样org.carrot2依赖于commons-httpclient 3.1所以我如何将这个commons-httpclient 3.1更改为HttpClient 4.1.1 。 我在日食工作。 因为我想从那些依赖于这个jar文件的人那里删除commons-httpclient:3.1并且我想用HttpClient 4.1.1替换。

所以我试图做什么..我从依赖层次结构文件夹双击这个org.carrot2并进入它的pom.xml文件,并试图将commons-httpclient 3.1更改为httpclient 4.1.1,但它不允许我更改为退格和删除不起作用..

任何建议将不胜感激..

首先请确保所提到的工件可以与HttpClient 4.1.1一起正常工作

我们可以为每个依赖项定义“ 排除 ”,如http://maven.apache.org/pom.html#Exclusions中所述。

排除明确告诉Maven您不希望包含作为此依赖项依赖项的指定项目(换句话说,它的传递依赖项)

排除 :排除包含一个或多个排除元素,每个排除元素包含groupId和artifactId,表示要排除的依赖项。 与可选或可能未安装和使用的可选项不同,排除主动将自己从依赖树中删除。

   the_group the_artifact the_version   the_apache_group the_http_client_artifact     the_apache_group the_http_client_artifact 4.1.1  ...  

我希望这可能有助于实现这一要求。

问候,

Charlee Ch。

将HttpClient 4.1.1的依赖项添加到您的 POM。 Maven将识别直接依赖关系和间接依赖关系之间的冲突(假设httpclient的groupId和artifactId没有改变),并使用较新的版本。 (不是因为它更新,而是因为它更直接)

而且你不能编辑其他人的pom文件是有道理的 – 毕竟,你想要胡萝卜只在你的程序中使用较新的http客户端,而不是所有使用胡萝卜的程序…

如果某些东西依赖于HttpClient 3.x ,它将无法替代4.x因为它们是完全不同的API。 尝试访问依赖于3.x的代码时,您将收到运行时错误。