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