簡體   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