如何防止在子pom中覆盖父pom依赖版本

时间:2014-09-09 12:25:25

标签: java maven pom.xml

我有父pom这样的配置:

<dependencyManagement>  
    <dependencies>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.2.9</version>
        </dependency>
    </dependencies>
</dependencyManagement>

我的孩子pom:

<dependencies>
    <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.3.5</version>
    </dependency>
</dependencies>

我想在我的类路径中使用4.3.5版本,因为目前我收到错误,不应该修改父版本:

java.lang.NoClassDefFoundError: org/apache/http/impl/client/HttpClients

任何想法如何防止覆盖4.2.9版本?

3 个答案:

答案 0 :(得分:0)

如您所知,您的父pom依赖项包含在子pom中,则不需要在子pom.xml中编写依赖项。  在子使用中包含父pom依赖

<dependency>
            <groupId>${defined groupId of parent}</groupId>
            <artifactId>${artifact defined for parent }</artifactId>
            <version>${version defined for parent}</version>
        </dependency>

答案 1 :(得分:0)

在指定依赖关系的父Pom文件中添加范围为提供

<dependencyManagement>  
    <dependencies>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.2.9</version>
            <scope>provided</scope> 
        </dependency>
    </dependencies>
</dependencyManagement>

但是@Deltharis更好地评论了仅在父POM中使用依赖关系

答案 2 :(得分:0)

我将父版本更改为所需版本并从子版本中删除了依赖项(简单和最佳解决方案)。 感谢@Deltharis的评论!