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

如何通过父pom中的依赖关系管理强制maven依赖版本?

焦阎宝
2023-03-14

假设<code>B:1.0.1,但是子项目应该依赖于<code>A:1.2(有意覆盖传递依赖性)。

很容易发现中依赖关系的顺序

在这种情况下,我在寻找一种方法在父pom中声明< code>A:1.0.2,并从它的所有子POM中删除样板文件。不幸的是,下面的设置导致在最终的工件中使用两个版本:< code>A:1.0.1(作为< code>B:1.0.1的依赖项)和< code>A:1.0.2(来自父pom中的显式声明)。

如何在所有子项目中强制使用< code>A:1.0.2版本,并在父项目中保留声明?

父pom:

<groupId>my-group</groupId>
<artifactId>my-parent</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>

<dependencyManagement>
  <dependencies>   
    <dependency>
      <groupId>g</groupId>
      <artifactId>A</artifactId>
      <version>1.0.2</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

儿童pom:

<parent>
  <groupId>my-group</groupId>
  <artifactId>my-parent</artifactId>
  <version>0.0.1</version>
</parent>

<artifactId>my-child</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>

<dependencies>   
  <dependency>
    <groupId>g</groupId>
    <artifactId>A</artifactId>
    <!-- version 1.0.2 comes from the parent pom -->
  </dependency>
</dependencies>

<dependencyManagement>
  <dependencies>   
    <dependency>
      <groupId>g</groupId>
      <artifactId>B</artifactId>
      <version>1.0.1</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

共有1个答案

左丘季
2023-03-14

您不正确地使用了依赖项管理。

如果A和B是jar工件,则不应该有标记

<type>pom</type>
<scope>import</scope>

这些仅适用于BOM。

 类似资料:
  • 如何从父POM解析占位符的托管属性?我希望它是全局解析的,因此当父pom具有版本2时,也将解析为版本2。 在父级pom中,我有: 在孩子身上我用 这是意料之中的行为吗?我使用的是maven 3.0.4。

  • 我们有一个模块化项目,包含大约10个工件: 此外,一些工件之间存在依赖关系: 我们当前的设置如下所示: parent是包含父POM的工件 这个父POM定义了所有必要的依赖项(比如Spring、JPA等等)进来 我们所有的工件也都在中定义 我们的工件将父工件称为明显的父工件 只有父POM定义版本。其他所有的POM都没有 我们使用三个数字的版本控制方案: 例如: 问题是: 一旦我们更改了工件的版本(例

  • 我有一个简单的maven插件,它依赖于父pom文件。父pom文件有十个(10个)第三方jar依赖项,这些依赖项已经使用以下命令安装在我的本地回购中。 类似地,我已经安装了所有其他9个罐子到我的本地回购。这是uber pom.xml文件。 我也尝试使用uber-pom作为一个插件依赖,因为我是绝望的。有什么想法吗?

  • 我想知道以下jar的所有传递依赖项: 将经典命令移动到pom。项目定义依赖关系和输入的xml: mvn依赖:树 将显示: 我没看到魔咒父母: 乍一看,mvn命令似乎可以显示非pom类型的依赖项。 有没有一种方法可以精确地显示使jar保持活动状态所需的每个文件? 谢谢

  • maven允许您在pom文件中定义: (A) - (B) /- 如果我把错误/未知的工件放在A类-maven肯定会失败。 如果我将错误/未知工件放在类别B上-maven只会在它影响类别A时失败(例如,A在上定义dep,B在

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