Fitnesse maven-classpath-plugin与Guava Jar包冲突问题求助
解决Fitnesse与Guava Jar包冲突的方案
Jar包冲突在Maven项目里真的是家常便饭,尤其是Guava这种被大量第三方库依赖的工具包,遇到别慌,咱们一步步来解决:
第一步:先定位冲突根源
首先得明确Fitnesse到底依赖的是哪个版本的Guava,用Maven的依赖树命令就能一目了然:
mvn dependency:tree -Dincludes=com.google.guava:guava
执行后你就能看到Fitnesse引入的Guava版本,以及它是通过哪个子依赖带进来的,搞清楚冲突的来龙去脉。
第二步:排除Fitnesse自带的Guava依赖
如果你的项目必须固定使用Guava 23.0,直接在Fitnesse的依赖配置里排除它自带的Guava即可,修改pom.xml如下:
<dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>23.0</version> </dependency> <dependency> <groupId>org.fitnesse</groupId> <artifactId>fitnesse</artifactId> <version>你的Fitnesse版本号</version> <exclusions> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
配置完成后,Fitnesse就会复用你指定的23.0版本Guava,不会再加载它自身依赖的版本。
第三步:用Dependency Management统一版本(更省心的方案)
如果项目里还有其他依赖也用到Guava,推荐用dependencyManagement全局管控版本,从根源避免同类冲突:
<dependencyManagement> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>23.0</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </dependency> <dependency> <groupId>org.fitnesse</groupId> <artifactId>fitnesse</artifactId> <version>你的Fitnesse版本号</version> </dependency> </dependencies>
这种方式会强制所有依赖使用你在dependencyManagement中指定的Guava版本,不用逐个排除,后续新增依赖也能自动对齐版本。
⚠️ 注意:修改完pom后记得执行mvn clean install重新构建项目,确保配置生效。如果排除后Fitnesse出现运行时错误,大概率是Fitnesse不兼容Guava 23.0,这时候你可能需要调整Guava版本到Fitnesse兼容的版本,或者升级Fitnesse本身。
内容的提问来源于stack exchange,提问作者RDM
相关产品推荐
相关产品推荐

