当前位置: 首页 > 知识库问答 >
问题:

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

毛德华
2023-03-14

我有这样配置的父pom:

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

我的孩子波姆:

<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个答案

狄兴业
2023-03-14

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

段溪叠
2023-03-14

在指定依赖项的父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中使用依赖项

华英睿
2023-03-14

如您所知,您的父 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>
 类似资料:
  • 我是使用maven和jenkins的新手。我正在尝试从父pom继承到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子波姆: 这是我如何尝试从父POM继承子POM中的依赖关系: 如果我在子POM中放置这些相同的依赖项,它会完美地工作。我使用jenkins在nexus中进行安装和部署。我使用的是maven-3.3.9。在jenkins中,我阅读了git中两个不同maven项目中

  • 我在父母pom中有一个依赖管理部分,比如 还有一个孩子pom 我试图使用强制执行器插件防止这种在子pom中重写,只允许在父级中设置这些,但一直无法。我希望这会使构建失败。有可能吗,使用那个插件或其他方式? 还有DependencyConvergence,它强制所有版本都是相同的,但这太严格了,因为我不想控制所有可传递的依赖项,只想控制显式定义的依赖项。 如果我能阻止在子pom中引入任何新的依赖项,

  • 我有多个spring项目,它们都具有相同的自定义父POM,它们都继承了它们的spring-boot版本(1.5.18.release)。只有一个子项目需要更新到版本2.1.4.release,但是当我导入spring-boot-dependencies时,子项目中的spring-boot dependencies仍然保持在版本1.5.18.release。 自定义父POM:

  • 我有一个带有子pom B、C和D的父pom A,在B、C和D中,我有相同类型的依赖项。 ie父Pom 儿童Pom 到目前为止,我已经尝试过编辑插件surefire,当试图排除子pom的测试范围时,它不起作用。 我的问题是,是否有一种方法可以将概要文件添加到父pom中,以排除所有子pom的类型测试jar的所有依赖项。谢谢

  • 问题内容: 我是使用Maven和Jenkins的新手。我试图继承从父pom到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子POM: 这是我尝试从父POM继承子POM中的依赖项的方法: 如果我将相同的依赖项放在子POM中,则效果很好。我使用jenkins在nexus中进行安装和部署。我正在使用maven-3.3.9。在詹金斯,我从git中阅读了两个不同的Maven项目中的父

  • Maven插件及其在父pom中定义的依赖项,我不希望我的子pom包含该插件依赖项。 例如,如果有1个父级和100个子级,99个使用该插件并希望在一个子级中排除该插件。 我们如何才能实现这一目标?