执行mvn site遇Sink.verbatim()方法缺失的NoSuchMethodError求解决
解决Maven site命令中的
NoSuchMethodError: void org.apache.maven.doxia.sink.Sink.verbatim()错误 问题根源
这个错误属于依赖版本冲突:你配置的报告插件(如maven-project-info-reports-plugin 3.8.0、maven-surefire-report-plugin 3.5.2)依赖的Doxia组件版本,与Maven Site插件实际加载的Doxia版本不兼容。verbatim()方法在低版本Doxia中不存在,或方法签名发生了变更,导致调用时报错。
可行解决方案
1. 统一Doxia核心依赖版本
在pom.xml的<dependencyManagement>块中强制指定Doxia组件的统一版本,确保所有报告插件使用同一套兼容的Doxia库:
<dependencyManagement> <dependencies> <!-- 适配多数3.x报告插件的稳定版本 --> <dependency> <groupId>org.apache.maven.doxia</groupId> <artifactId>doxia-core</artifactId> <version>1.12.0</version> </dependency> <dependency> <groupId>org.apache.maven.doxia</groupId> <artifactId>doxia-sink-api</artifactId> <version>1.12.0</version> </dependency> <dependency> <groupId>org.apache.maven.doxia</groupId> <artifactId>doxia-site-renderer</artifactId> <version>1.12.0</version> </dependency> </dependencies> </dependencyManagement>
2. 升级冲突的报告插件
部分旧版本插件与新版Doxia兼容性差,直接升级到更稳定的版本:
- 将
maven-project-info-reports-plugin从3.8.0升级到3.9.0+ - 将
maven-surefire-report-plugin从3.5.2升级到3.6.2+
修改后的插件配置示例:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> <version>3.9.0</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-report-plugin</artifactId> <version>3.6.2</version> </plugin>
3. 清理本地Maven缓存
本地仓库的依赖缓存损坏也可能引发这类问题,执行以下命令强制清理并重新拉取依赖:
mvn clean install -U
4. 显式排除插件内的冲突依赖
如果上述方法无效,可在冲突插件中直接排除旧版本Doxia,强制使用指定版本:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-project-info-reports-plugin</artifactId> <version>3.8.0</version> <dependencies> <dependency> <groupId>org.apache.maven.doxia</groupId> <artifactId>doxia-sink-api</artifactId> <version>1.12.0</version> </dependency> </dependencies> </plugin>
关于反馈问题到Maven团队
若所有方案都无效,可通过Apache Maven官方的问题追踪系统提交问题,入口位于Maven官网的社区板块下的问题追踪区域。
内容的提问来源于stack exchange,提问作者PatPanda
相关产品推荐
相关产品推荐

