编程语言
首页 > 编程语言> > java – 相同工件和传递依赖项的不同范围问题

java – 相同工件和传递依赖项的不同范围问题

作者:互联网

我有一个项目A使用库L v1.0.0与测试范围.项目A还依赖于项目B(具有范围编译),B依赖于库L v1.0.0(具有范围编译).

为什么项目A的库L的最终范围是“测试”?它在运行时导致我NotClassDefFoundError.似乎项目A对库L的依赖性定义优先于L上的传递依赖性.

这有什么不对?我的项目A仅使用L进行单元测试,因此我使用’test’范围定义依赖项.但是,最后,我希望L在我的类路径上,因为项目A依赖于项目B进行生产,而B需要(传递)库L.

谢谢你的帮助

解决方法:

作为Peter的建议的替代方法,只需将L从A的依赖项中删除.无论如何,您应该能够访问它,并且Maven会将其视为编译范围的依赖项.

但这隐藏了A的测试依赖于L.

标签:java,maven,maven-3
来源: https://codeday.me/bug/20191009/1875609.html