You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Maven的dependencyManagement无法修复Enforcer依赖收敛错误?

问题原因分析

Maven的dependencyManagement仅对groupId和artifactId完全匹配的依赖生效,你的问题核心在于混淆了两个独立的依赖项:

  • 你在dependencyManagement中配置的是net.java.dev.jna:jna-platform的版本
  • 但com.microsoft.azure:msal4j-persistence-extension引入的是net.java.dev.jna:jna——这是artifactId完全不同的依赖,因此dependencyManagement里的配置不会对它产生作用

jna和jna-platform是关联但独立的Maven依赖,Maven会将它们视为完全不同的依赖项处理。你仅统一了jna-platform的版本到5.14.0,但jna的版本仍由msal4j-persistence-extension的依赖声明控制(即5.13.0),而jna-platform 5.14.0本身大概率依赖更高版本的jna,最终导致依赖树中出现不同版本的jna,触发Enforcer插件的收敛错误。

解决办法

在dependencyManagement中同时声明net.java.dev.jna:jna和net.java.dev.jna:jna-platform的版本,确保两个依赖的版本统一:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna</artifactId>
            <version>5.14.0</version>
        </dependency>
        <dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna-platform</artifactId>
            <version>5.14.0</version>
        </dependency>
    </dependencies>
</dependencyManagement>

这样所有间接引入的jna和jna-platform都会强制使用5.14.0版本,解决依赖收敛问题。

内容的提问来源于stack exchange,提问作者oligofren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 09:33:13