Java 在maven中重写第三方jar的依赖项

Java 在maven中重写第三方jar的依赖项,java,eclipse,maven,Java,Eclipse,Maven,像这样,org.carrot2取决于commons-httpclient 3.1,因此我如何将commons-httpclient 3.1更改为httpclient 4.1.1。我在eclipse工作。因为我想删除 commons-httpclient:3.1来自依赖此jar文件的人,我想用httpclient 4.1.1替换 所以我想做的是。。我从dependency hierarchy文件夹双击了这个org.carrot2,进入了它的pom.xml文件,并试图将commons httpcli

像这样,
org.carrot2
取决于
commons-httpclient 3.1
,因此我如何将
commons-httpclient 3.1
更改为
httpclient 4.1.1
。我在eclipse工作。因为我想删除
commons-httpclient:3.1
来自依赖此jar文件的人,我想用
httpclient 4.1.1
替换

所以我想做的是。。我从dependency hierarchy文件夹双击了这个
org.carrot2
,进入了它的pom.xml文件,并试图将
commons httpclient 3.1
更改为httpclient 4.1.1,但它不允许我更改,因为backspace和delete不起作用


如有任何建议,将不胜感激。

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


而且你不能编辑其他人的pom文件也是有道理的——毕竟,你希望carrot只在你的程序中使用较新的http客户端,而不是在所有使用carrot的程序中使用……

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

我们可以为每个依赖项定义“排除”,正如在

排除明确地告诉Maven 您不想包括 作为依赖项的指定项目 这种依赖性(换句话说, 它的传递依赖性)

排除:排除包含一个或多个 更多的排除元素,每个 包含groupId和artifactId的 表示要排除的依赖项。 与可选的不同,可选的可能是也可能不是 安装和使用,不包括 积极地使自己脱离社会 依赖树


联合国集团
神器
联合国版本
阿帕奇集团
_http_client_工件
阿帕奇集团
_http_client_工件
4.1.1
...
我希望这有助于达到要求

问候,


Charlee Ch.

如果某个东西依赖于
HttpClient
3.x
它将无法替代
4.x
,因为它们是完全不同的API。尝试访问依赖于
3.x

@meriton的代码时,您会遇到运行时错误,我如何在HttpClient 4.1.1上添加依赖项。。正如我希望
org.carrot2
依赖于
HttpClient 4.1.1
而不是
commons HttpClient 3.1
一样。无论pom是声明对HttpClient的依赖还是声明对carrot的依赖,它都会在相同的类路径中结束。我相信你知道如何添加依赖项,因为carrot以某种方式出现在你的依赖项层次结构中…@meriton,我在做其他一些项目,他让这个项目保持原样。。这就是为什么我要完成这个。。我在pom.xml文件中添加了这个
org.apache.httpcomponents-httpclient 4.1.1
,但是那些依赖于
commons-httpclient 3.1
的人仍然依赖它。上面的答案有一个问题-Maven最终不会使用最新的依赖项。相反,它将根据最小距离解决两个依赖项之间的冲突,因此它将选择您在自己的pom中本地声明的一个,因为它比另一个更接近。@Eugen,感谢您的回复。
org.apache.solrsolr-solrj3.2.0 commons httpclientcommons httpclient org.apache.httpcomponents httpclient4.1.1
因此,我将commons httpclient作为org.apache.solr right??Chitsuk的依赖项删除到httpclient4.1.1,感谢您的回复。
org.apache.solrsolr-solrj3.2.0 commons httpclientcommons httpclientcommons httpclient org.apache.httpcomponents httpclient4.1.1
。将使用HttpClient 4.1.1代替.Chitsuk,我的pom.xml中已经有dependencies标记,所以我应该只复制这个
org.apache.solrsolr-solrj3.2.0 commons httpclientcommons HttpClient org.apache.httpcomponents httpclient4.1.1
right?Chitsuk,我一保存它就会自动构建所有内容。或者我得做点什么希望你记得我。。根据您的建议,我开始使用HttpClient 4.1.1,我发现了新的错误。这可能是一个评论,但它不是对op问题的回答。
<dependencies>
  <dependency>
    <groupId>the_group</groupId>
    <artifactId>the_artifact</artifactId>
    <version>the_version</version>
    <exclusions>
      <exclusion>
        <groupId>the_apache_group</groupId>
        <artifactId>the_http_client_artifact</artifactId>
      </exclusion>
    </exclusions>
  </dependency>

  <dependency>
    <groupId>the_apache_group</groupId>
    <artifactId>the_http_client_artifact</artifactId>
    <version>4.1.1</version>
  </dependency>
  ...
</dependencies>