繁体   English   中英

Maven parent/bom 之间的属性压倒性冲突

[英]Maven property overriding conflict between parent/bom

我目前的 maven 配置存在问题。 我认为它会以 MyBom 中的版本在祖祖父母定义的版本上具有更高优先级的方式工作。

这是设置:

在此处输入图像描述

在 spring-dependencies 中,我有这个版本 <atomikos.version> 4.0.6 </atomikos.version>。 在 myBom 中,我有这个版本 <atomikos.version> 5.0.106 </atomikos.version>。

spring-dependenciesMyBom都有

<dependency>
        <groupId>com.atomikos</groupId>
        <artifactId>transactions-jta</artifactId>
        <version>${atomikos.version}</version>
</dependency>

我像往常一样在“MyParent”中导入了 bom:

<dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.test</groupId>
        <artifactId>myBom</artifactId>
        <version>${myBom.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

最后,在“MyProject”中,当我显示有效的 pom 时,它使用来自 spring-dependencies 的版本4.0.6

我期望版本为5.0.106 ,因为 bom 在子层中重新定义了它。

请注意,它可以与 bom 和 parent 之间常见的任何依赖项一起使用。

所以,目前,我唯一可行的解决方案是手动设置“MyParent”中的版本,这使得“MyBom”的创建无用......

你能确认什么是正确的吗? 我的假设(意味着我在某处配置错误)或当前行为,意味着“MyBom”毫无价值。

据我所知,无论 inheritance 级别是什么,dependencyManagement 中的“直接”条目始终优先于 BOM。

您可能应该只覆盖<atomikos.version>属性。

这不可能覆盖“MyBom”项目的父版本。 唯一的解决方案是删除 spring-boot-starter-parent 作为父级并在“MyBom”导入的同一级别导入 spring-dependencies。

我找到了解决方案,但我要感谢@J Fabian Meyer 也指出了正确的解决方案。

dependencyManagement 只是声明当真正用作项目依赖项时依赖项的版本应该是什么。 因此,您仍然应该声明(使用)myBom 依赖项。 此外,scope“导入”无效。 查看文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM