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

时间:2011-06-30 23:17:05

标签: java eclipse maven

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

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

任何建议都将受到赞赏..

3 个答案:

答案 0 :(得分:14)

首先请确保提到的工件可以使用HttpClient 4.1.1 正常工作。

我们可以为http://maven.apache.org/pom.html#Exclusions

中提到的每个依赖项定义“排除
  

排除明确告诉Maven   你不想包括   指定的项目是一个依赖项   这种依赖性(换句话说,   它的传递依赖)

     

排除:排除项包含一个或   每个都有更多的排斥因素   包含groupId和artifactId   表示要排除的依赖项。   与可选的不同,可能是也可能不是   安装和使用,排除   积极地从中脱身   依赖树。

<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>

我希望这可能有助于达到要求。

此致

Charlee Ch。

答案 1 :(得分:2)

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

有理由你不能编辑别人的pom文件 - 毕竟,你想要胡萝卜只在你的程序中使用较新的http客户端,而不是所有使用胡萝卜的程序......

答案 2 :(得分:0)

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