maven运行时作用域,但可传递依赖项具有编译作用域
项目A依赖于具有运行时范围的项目B。 项目B依赖于具有编译范围的项目C。 若项目A中的代码调用项目C中的函数,我希望项目A的mvn编译失败,但事实并非如此 预期的行为是什么maven运行时作用域,但可传递依赖项具有编译作用域,maven,maven-compiler-plugin,Maven,Maven Compiler Plugin,项目A依赖于具有运行时范围的项目B。 项目B依赖于具有编译范围的项目C。 若项目A中的代码调用项目C中的函数,我希望项目A的mvn编译失败,但事实并非如此 预期的行为是什么 我将maven 3.0.4与maven编译器插件2.5.1和maven依赖插件2.5一起使用。maven文档给出了表 要确定范围是什么,您需要遵循以下条目路径 从最终父项目开始,合并所有列表。对执行相同的操作。合并时,groupId:artifactId:type:classifier是键,具有相同键的依赖项的子POM将覆盖
我将maven 3.0.4与maven编译器插件2.5.1和maven依赖插件2.5一起使用。maven文档给出了表 要确定范围是什么,您需要遵循以下条目路径
列表。对
执行相同的操作。合并时,groupId:artifactId:type:classifier
是键,具有相同键的依赖项的子POM将覆盖它们指定的任何值
应用到
列表以填充任何空白
覆盖范围
,版本
和排除项
,这就是有效的可传递依赖项列表
还有其他更微妙的影响,可以保留现有的行为,其中bug基本上已经成为特性,版本范围可能会进一步混淆问题,但是上面应该对问题空间有一个大致的理解这是因为父pom有一个依赖项管理部分,给出了项目C作为编译的范围。我仍然感到惊讶的是,在编译过程中,可传递依赖项所隐含的对C范围的限制并没有覆盖父依赖项管理中的范围。