当前位置: 首页 > 面试题库 >

相同工件和传递依赖项的不同范围

公冶光亮
2023-03-14
问题内容

我有一个使用测试范围的库L v1.0.0的项目A。项目A还依赖于项目B(具有范围编译),而B则可传递地依赖于库L v1.0.0(具有范围编译)。

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

怎么了
我的项目A仅将L用于单元测试,因此我定义了“测试”范围的依赖项。但是,最后,我希望L在我的类路径中,因为项目A依赖项目B进行生产,而项目B需要(传递)库L。

谢谢你帮我


问题答案:

作为Peter建议的替代方法,只需将L排除在A的依赖项之外。无论如何,您都应该能够访问它,Maven会将其视为compile-scoped依赖项。

但这掩盖了A的测试取决于L。



 类似资料:
  • 我遇到了以下两个依赖项的问题: org.apache.felix"org.apache.felix.utils" 和 通用域名格式。github。rotty3000»phidias»0.3.2 它们都对组织有可传递的依赖关系。奥斯基。核心,felix依赖于版本4.1.0,phidias依赖于版本5.0.0 我们需要5.0.0版本才能正确编译代码 如果我把我的依赖项作为: Maven自动获取版本4.

  • 但是我有两种回购方式 如何创建两个bean,其中一个是用注入的,另一个是用注入的?

  • 我给ivy添加了一个依赖项(我们称之为a)。在maven central中具有pom文件的xml。Ivy使用ibiblio来解析maven依赖项。添加到常春藤中的依赖项(A)。xml具有可传递依赖项(B)。到目前为止,一切都很好。传递依赖(B)的依赖(C)不能用常春藤来解决。 我在常春藤上定义了一个新的名字。如下所示的xml: 在B的pom文件中,C在编译和测试范围中定义如下: 当我在ivy的缓存

  • 我的项目有一些依赖项(真的很多),我正在依赖项中添加它们。但是我不想要任何传递依赖项,这将超出我的控制范围(maven给我带来了几乎三倍于我需要的东西)。我试图通过以下方式禁止传递依赖项: 但是在我做了一个mvn包之后,传递依赖项仍然被下载并添加到我构建的包中。这是maven的日志记录: 所以这不是我想要的。我想要maven不要自动下载传递依赖项,或者不要将它们添加到我的“mvn包”中。 感谢任何

  • 我遇到了一个奇怪的问题,我的Maven文件中有两个依赖项,它们都定义了。我遇到的问题是,我的一个依赖项显然使用了代码所期望的不同版本,它会抛出and错误。 我的代码正在从Tika依赖项获取类,这导致了问题。我希望它来自我定义的,这是正确的版本。它似乎也忽略了文件中依赖项的排序。

  • 问题内容: 对于不同的配置文件,maven pom.xml文件中是否可能具有一组不同的依赖关系? 例如 我想在一个配置文件中选择一个不同的依赖项jar文件,该文件具有相同的类名和相同接口的不同实现。 问题答案: 在此引用Maven文档: 配置文件元素既包含可选激活(配置文件触发器),又包含如果已激活POM则要对POM进行的一组更改。例如,为测试环境构建的项目可能指向与最终部署不同的数据库。或者可以