gpt4 book ai didi

maven 运行时范围,但传递依赖项具有编译范围

转载 作者:行者123 更新时间:2023-12-04 05:03:44 25 4
gpt4 key购买 nike

项目 A 依赖于具有运行时范围的项目 B。
项目 B 依赖于具有编译范围的项目 C。
如果项目 A 中的代码调用项目 C 中的函数,我预计项目 A 的 mvn compile 会失败,但事实并非如此。

预期的行为是什么?

我将 maven 3.0.4 与 maven-compiler-plugin 2.5.1 和 maven-dependency-plugin 2.5 一起使用。

最佳答案

maven 文档给出了 a slightly confusing until you understand it table 。

要确定范围是什么,您需要遵循以下条目路径...

  • 从最终的父项目开始,合并所有<dependencies>列表。对 <dependencyManagement> 执行相同操作.合并时,groupId:artifactId:type:classifier是键,具有相同键的依赖项的子 pom 会覆盖它们指定的任何值。
  • 现在您需要申请 <dependencyManagement><dependencies>列表以填写任何空白。

  • 至此,我们现在知道了当前项目的依赖关系。此列表中的范围对应于您从表中选择的行。

    对于列表中的每个依赖项,您重复上述过程以计算依赖项有效依赖项列表(是的,也包括这一步),然后这些依赖项的范围与表中的列选择相对应。

    一旦你通过表格计算出传递依赖,以及它们的范围,对于每个依赖,你就可以应用当前模块的 <dependencyManagement>。覆盖 scope , versionexclusions<dependencyManagement> 定义那里有有效的传递依赖列表。

    还有其他更微妙的影响可以保留现有行为,其中错误基本上已成为功能,版本范围可能会进一步混淆事物,但以上应该让上帝对问题空间有一个大致的了解

    关于maven 运行时范围,但传递依赖项具有编译范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15793551/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com