【问题标题】:How to prevent from overriding parent pom dependency version in child pom如何防止在子 pom 中覆盖父 pom 依赖版本
【发布时间】:2014-09-10 16:29:07
【问题描述】:

我有这样配置的父 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 版本?

【问题讨论】:

  • “我想在我的类路径中使用 4.3.5 版本,因为此时我遇到错误,不应该修改父版本:” - 这有点自相矛盾。
  • 您没有理由希望在一个模块化项目中具有不同版本的相同依赖项。即使你现在解决它,它也会在以后咬你。此外,该错误是由于在您正在运行的任何内容中未使用 4.3.5 版本引起的。
  • 尝试为父pom文件中的依赖添加provided
  • 您的问题有点令人困惑——您“想使用 4.3.5”,但又想“防止覆盖 4.2.9 版本”?您希望孩子 pom 使用哪个版本?无论哪种方式,这个问题都有帮助吗? stackoverflow.com/q/14521176/1570834
  • @DB5 我只想使用子版本。是的,我看到了这个答案,但是没有用。

标签: java maven pom.xml


【解决方案1】:

如您所知,您的父 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>

【讨论】:

    【解决方案2】:

    在您的父 Pom 文件中为指定的 Dependency 添加范围作为提供

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

    但正如@Deltharis 所说,最好仅在父 POM 中使用依赖项

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-10
        • 2020-07-12
        • 1970-01-01
        • 2016-12-17
        • 2018-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多