项目A依赖于具有运行时范围的项目B。项目B依赖于具有编译范围的项目C。如果项目A中的代码调用项目C中的函数,我希望项目A的mvn编译会失败,但它不会。
预期的行为是什么?
我使用的是maven 3.0.4和maven编译器插件2.5.1和maven依赖插件2.5。
发布于 2013-04-04 22:26:50
maven文档给出了有点困惑,直到你明白表。
要确定范围是什么,您需要遵循以下的条目路径.
<dependencies>列表。对于<dependencyManagement>也要这样做。合并时,groupId:artifactId:type:classifier是键,子poms具有与相同键的依赖项,覆盖它们指定的任何值。<dependencyManagement>应用到<dependencies>列表中,以填充任何空白。此时,我们了解了当前项目的依赖关系。此列表中的作用域对应于从表中选择的行。
对于列表中的每个依赖项,您重复上面的过程来计算依赖项有效依赖列表(是的,也包括th步骤),然后这些依赖项的范围对应于表中的列选择。
一旦通过表为每个依赖项计算出了传递依赖项及其作用域,然后应用当前模块的<dependencyManagement>覆盖<dependencyManagement>定义的scope、version和exclusions,然后就有了有效的传递依赖列表。
还有其他更微妙的影响,可以保留but本质上已经成为特性的现有行为,而版本范围可能会进一步混淆事物,但是上面应该给上帝对问题空间的一般理解。
https://stackoverflow.com/questions/15793551
复制相似问题