引入maven-plugin-testing-harness依赖后遇NoSuchMethodError错误求助
我之前也碰到过一模一样的问题,这个错误几乎都是依赖版本冲突导致的——java.lang.NoSuchMethodError: DefaultPlexusContainer说明项目里存在多个版本的Plexus容器依赖,或者依赖的版本和maven-plugin-testing-harness需要的版本不兼容。下面是我亲测有效的解决步骤:
第一步:排查依赖冲突
先运行mvn dependency:tree命令,在输出里搜索org.codehaus.plexus:plexus-container-default,看看有没有多个不同版本的依赖被引入。比如项目里其他第三方依赖可能偷偷引入了旧版本的Plexus容器,和testing-harness 3.3.0需要的版本冲突。第二步:统一锁定Plexus版本
maven-plugin-testing-harness 3.3.0对应的兼容plexus-container-default版本是2.1.0,你可以在pom.xml的<dependencyManagement>块中强制声明这个版本,让所有依赖统一使用它:<dependencyManagement> <dependencies> <dependency> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-container-default</artifactId> <version>2.1.0</version> </dependency> </dependencies> </dependencyManagement>第三步:排除冲突的依赖
如果某个特定依赖引入了冲突的Plexus版本,直接在那个依赖里排除掉旧版本的plexus-container-default:<dependency> <!-- 这里替换成你项目里冲突的依赖坐标 --> <groupId>com.example</groupId> <artifactId>conflicting-dependency</artifactId> <version>1.0.0</version> <exclusions> <exclusion> <groupId>org.codehaus.plexus</groupId> <artifactId>plexus-container-default</artifactId> </exclusion> </exclusions> </dependency>第四步:检查Maven版本兼容性
maven-plugin-testing-harness 3.3.0需要配合Maven 3.5及以上版本使用,如果你的本地Maven版本低于3.5,建议升级到3.6.x或更高版本,避免核心依赖不兼容的问题。
如果做完以上步骤还是报错,可以试试清空本地Maven仓库中Plexus相关的缓存目录(~/.m2/repository/org/codehaus/plexus),然后重新执行mvn clean test,确保拉取的是正确的版本。
内容的提问来源于stack exchange,提问作者Μenelaοs

