Spring boot org.hamcrest isNotNullValue():当多个依赖项共存时要导入的
我在这里有一个依赖共存:Spring boot org.hamcrest isNotNullValue():当多个依赖项共存时要导入的,spring-boot,dependency-management,hamcrest,Spring Boot,Dependency Management,Hamcrest,我在这里有一个依赖共存:isNotNullValue()方法存在于我的Spring Boot应用程序的不同JAR中,下面的图片显示了我现在得到的结果: 如你所见,我有: wiremock.org.hamcrest.core.IsNull wiremock.org.hamcrest.CoreMatchers org.hamcrest.core.IsNull org.hamcrest.Matchers org.hamcrest.CoreMatchers 我应该进口哪一种 我想hamcrest库
isNotNullValue()
方法存在于我的Spring Boot应用程序的不同JAR中,下面的图片显示了我现在得到的结果:
如你所见,我有:
wiremock.org.hamcrest.core.IsNull
wiremock.org.hamcrest.CoreMatchers
org.hamcrest.core.IsNull
org.hamcrest.Matchers
org.hamcrest.CoreMatchers
- 相同的方法同时存在于多个jar中,而有些jar应该被隐藏,但不应该(如
)wiremock.org.hamcrest
- 相同的方法存在于几个具有相同依赖性的不同jar中,如
和hamcrest核心
hamcrest库
? 在所有的hamcrest建议中,我最后几乎总是使用的建议来自
org.hamcrest.CoreMatchers
。对于isNull
和is
方法
您看到类似类层次结构的原因是
wiremock
library附带了兼容版本的hamcrest。有时,您构建的库依赖于依赖项的特定版本,但用户可能具有与您的库不兼容的该库的不同版本。虽然代码可能会编译,但在运行时可能会失败。这可能发生在大多数广泛使用的库中,如Guava(在elasticsearch中)和hamcrest(在wiremock中)。该问题的解决方案是使用不同的包名来隐藏依赖项的版本,这样它们就不会给用户造成冲突或运行时问题。取舍是您的工件变得稍微重一些,因为它们也包含您的依赖项 是的,谢谢。我知道,wiremock
可能会使用他版本的hamcrest
,但正如你所说,他们可以遮住它,不让我知道。好的,我们已经放弃了wiremock
,但另一个问题是在core-1.3
和library-1.3
之间选择哪个jar,在CoreMatcher
和Matcher
之间选择哪个jar?有什么理由要选择吗?hamcrest的“核心”版本包含了一组基本的匹配器和抽象方法来构建更多的匹配器。hamcrest的“库”版本包含了更多实现的匹配器CoreMatchers
包含一组较小的匹配器,而后者包含更多的匹配器。我想这主要归结于偏好。对于重叠的方法,它们本质上是一样的。哦,我不知道。我想我可能会选择library
jar。谢谢