【问题标题】:How to exclude a dependency from remote mavenpom?如何从远程 mavenpom 中排除依赖项?
【发布时间】:2014-01-01 10:00:03
【问题描述】:

我有一个使用 mahout-0.8 依赖项的本地 pom。 Mahout pom 包含 1.1.2 版本的 hadoop-core 依赖项。 Link to mahout-0.8 pom

但在我的项目中,我需要最新的 hadoop-core,即 2.2.0 版本。正如我所读到的,hadoop-core-2.2.0 是从这些依赖项构建的:

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-core</artifactId>
            <version>2.2.0</version>
        </dependency>

所以我需要排除远程mahout-0.8 dependency 的依赖。如何排除这种依赖(剪断)或无法远程完成?

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-core</artifactId>
    <version>${hadoop.version}</version>
    ...
</dependency>

如果不能以这种方式完成,想知道如何将 mahout pom 集成到我的本地项目中。 非常感谢!

【问题讨论】:

    标签: maven dependencies pom.xml


    【解决方案1】:

    将第二个 sn-p 中的 hadoop-core 依赖项复制到 pom 的 dependencyManagement 部分。这会将其管理为您指定的任何版本。

    或者,如果您真的想完全阻止它来自 mahout,请将您的 mahout 依赖项更改为如下所示:

    <dependency>
        <groupId>org.apache.mahout</groupId>
        <artifactId>mahout</artifactId>
        <version>0.8</version>
        <exclusions>
           <exclusion>
               <groupId>org.apache.hadoop</groupId>
               <artifactId>hadoop-core</artifactId>
           </exclusion>
        </exclusions>
    </dependency>
    

    【讨论】:

    • 是的,你是对的,我知道这个功能。但是,在我的情况下,我需要从 mahout 中删除这个 hadoop-core 依赖项,因为有些类是旧的。我不再需要它了。 1.1.2 是 hadoop-core 的最后一个版本。
    • 管理该依赖项的版本将意味着 maven 将引入您指定的版本(因此不是旧版本)。所以我不完全明白你为什么要删除它,但我已经编辑了我的答案,以展示你如何做到这一点。
    • 谢谢,这正是我想做的。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2017-11-11
    • 2022-12-07
    • 1970-01-01
    • 2011-03-03
    • 2019-02-12
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    相关资源
    最近更新 更多