首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >maven运行时作用域,但传递依赖项具有编译范围。

maven运行时作用域,但传递依赖项具有编译范围。
EN

Stack Overflow用户
提问于 2013-04-03 16:58:47
回答 1查看 2.7K关注 0票数 2

项目A依赖于具有运行时范围的项目B。项目B依赖于具有编译范围的项目C。如果项目A中的代码调用项目C中的函数,我希望项目A的mvn编译会失败,但它不会。

预期的行为是什么?

我使用的是maven 3.0.4和maven编译器插件2.5.1和maven依赖插件2.5。

EN

回答 1

Stack Overflow用户

发布于 2013-04-04 22:26:50

maven文档给出了有点困惑,直到你明白表。

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

  1. 从最终的父项目开始,合并所有的<dependencies>列表。对于<dependencyManagement>也要这样做。合并时,groupId:artifactId:type:classifier是键,子poms具有与相同键的依赖项,覆盖它们指定的任何值。
  2. 现在,您需要将<dependencyManagement>应用到<dependencies>列表中,以填充任何空白。

此时,我们了解了当前项目的依赖关系。此列表中的作用域对应于从表中选择的行。

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

一旦通过表为每个依赖项计算出了传递依赖项及其作用域,然后应用当前模块的<dependencyManagement>覆盖<dependencyManagement>定义的scopeversionexclusions,然后就有了有效的传递依赖列表。

还有其他更微妙的影响,可以保留but本质上已经成为特性的现有行为,而版本范围可能会进一步混淆事物,但是上面应该给上帝对问题空间的一般理解。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15793551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档