<dependency>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
<exclusions>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty-codec-http2</artifactId>
</exclusion>
</exclusions>
</dependency>
你需要排除标签
Maven在选择依赖项的版本时不会比较版本号。当执行广度优先搜索时,它简单地选择它遇到的第一个版本。因此,gRPC团队强烈建议使用Maven enforcers < code > requireUpperBoundDeps 来检测您所面临的问题:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.4.1</version>
<executions>
<execution>
<id>enforce</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireUpperBoundDeps/>
</rules>
</configuration>
</execution>
</executions>
</plugin>
然后,要解决问题,有两种方法:
(1) 目标是Maven的广度优先搜索,以获得您希望在Maven搜索中首先“看到”的版本。例如,您可以在<code>中的<code>grpc netty</code>之前重新排序<code>netty处理程序</code>
(2) 适用于多工件项目,如gRPC和Netty,您确实希望各种工件的版本一致。您通常不希望将netty buffer
4.1.51.Final与netty-codec-http2
4.1.27.Final一起使用;你希望它们是相同的版本。在这些情况下,可以检查项目是否具有BOM表。gRPC和Netty都有BOM表。使用BOM表,您可以为该项目中的所有不同工件选择一次使用的版本。BOM在<code>中定义
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-bom</artifactId>
<version>4.1.51.Final</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
...
无论你做什么,都不要排斥。排除之后会导致依赖关系问题,因为它们隐藏了可传递的依赖关系。如果更新版本的gRPC依赖于更新版本的Netty,那么最终会降级Netty。此时,构建工具不再能够检测或管理问题;您只能在运行时发现此类问题。
从你所展示的很明显,在你的pom.xml中发生了更多的事情;你真的需要分享更多的pom来诊断。但是由于其他答案告诉你要排除,我想展示更合适的解决方法。
这将打印: 在同一个文件夹中有一个poi-3.8.jar,但类路径取3.2。 我的问题是:我应该做什么,以便我的项目使用POI-3.8.jar而不是POI-3.2.jar。 非常感谢!! 编辑:的输出
我写了一个库,它依赖于Guava版本20.0(与JDK 1.7兼容的最后一个版本) 然后,我编写了一个使用该库的应用程序,还uk.org.lidalia: slf4j-test: 1.2.0(带有测试范围)。slf4j-test依赖于Guava的14.0.1版本。 我的问题是,我的应用程序将两个不同版本的Guava视为可传递依赖项,并选择较旧的版本。现在,当我调用库中的某些方法时,我会得到类或方法
这里有几个关于Stackoverflow的问题,关于Kotlin编译器警告,当不同版本的Kotlin JAR在类路径中混合时。 这个问题是一个不同的问题,涉及到使用静态编程语言开发Gradle插件时的情况。当您至少有以下一项: 插件应用 plugin被应用 添加了依赖项 添加了依赖项 你有静态编程语言插件,如,例如: 你会出名的: 静态编程语言1.3.72是Gradle 6.7的嵌入式版本,静态编
Semantic Versioning Packages in Yarn follow Semantic Versioning, also known as “semver”. When you install a new package from the registry it will be added to your package.json with a semver version ra
Package dependencies are critical to the success of a package. When you develop the functionality of your package, you will very likely use existing code defined in other packages. Those packages then
我正在spring boot项目中使用QPID JMS客户端(版本0.59.0)。我想覆盖netty版本,因为QPID的这个版本附带netty版本:4.1.63。最终[1]。我想将netty版本改写为最新版本:4.1.68。最终的我还在我的POM中使用spring boot starter父版本(版本:2.3.12.RELEASE)作为父POM,它还附带一个netty版本(4.1.65.Final