StringUtil defaultIfBlank在添加kube java客户端后消失
我正在向maven项目添加以下依赖项:StringUtil defaultIfBlank在添加kube java客户端后消失,java,maven,Java,Maven,我正在向maven项目添加以下依赖项: <dependency> <groupId>io.kubernetes</groupId> <artifactId>client-java</artifactId> <version>10.0.0</version> </dependency> <dependency&g
<dependency>
<groupId>io.kubernetes</groupId>
<artifactId>client-java</artifactId>
<version>10.0.0</version>
</dependency>
<dependency>
<groupId>io.kubernetes</groupId>
<artifactId>client-java-extended</artifactId>
<version>10.0.0</version>
</dependency>
库伯内特斯
客户端java
10.0.0
库伯内特斯
客户端java扩展
10.0.0
但是,添加此项后,StringUtils.defaultsIfBlank将消失,并且我的代码无法编译。我已尝试向这些依赖项添加以下排除项:
<exclusions>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</exclusion>
</exclusions>
org.apache.commons
公地郎
org.apache.commons
commons-lang3
我发现进入类路径的StringUtils类来自io.sundr:sundr codegen:0.22.0,这是Kube的一个依赖项,打包为uber jar。这似乎很奇怪,我如何使我的直接依赖项中的StringUtils取得优先权?您可以通过使用。听起来您上面列出的这些依赖项之一可能会过渡地引入一个不同于您隐含要求的
commons lang
版本。您如何导入StringUtil
?在添加io.kubernetes之前导入org.apache.commons.lang.stringutils它工作正常。添加它之后,问题就出现了。这让我相信所显示的排除代码有问题。所拉取的版本与直接依赖项相同,它甚至没有从io.kube中拉取该版本,而且该方法仍在消失。Maven依赖关系管理声明“最近的”定义获胜。如果对库有直接依赖关系,则任何内容都不能覆盖其版本。但是StringUtils并没有得到正确的结果,如果没有您的pom.xml
,当然很难诊断这些问题。也就是说,您可以看到至少客户端java
依赖于commons-lang3版本3.1.1:当然,我不知道您期望的是什么版本。另外,关于排除,您必须将它们应用于每个可能会通过传递方式引入违规依赖项的依赖项。所以:排除,然后依赖:树
,然后添加更多排除,重复…。最后,您是否直接依赖于commons-lang3
自己?什么版本?我确实直接依赖于commons lang和common-lang3,lang3没有问题,它只是lang,例如:如果我用org.apache.commons.lang.StringUtils替换所有org.apache.commons.lang3.StringUtils,那么它就工作了,被替换的StringUtils只来自lang。我认为排除问题中提到的代码片段中的内容应该将其排除在客户机java和客户机java extended下面的所有内容之外。不是这样吗?我发现进入类路径的StringUtils类来自io.sundr:sundr codegen:0.22.0,这是Kube的一个依赖项。我怎样才能阻止这种事情发生?