因NoSuchMethodError导致Maven Site无法渲染,求解决方案
Maven Site阶段Asciidoctor相关NoSuchMethodError的解决思路
检查Asciidoctor Maven插件版本兼容性
这个错误核心原因是asciidoctor-maven-plugin与Doxia、Asciidoctor核心库版本不匹配,导致调用了不存在的getLog()方法。建议锁定插件的稳定兼容版本,参考插件官方文档推荐的依赖版本组合,在pom.xml中明确指定插件版本:<build> <plugins> <plugin> <groupId>org.asciidoctor</groupId> <artifactId>asciidoctor-maven-plugin</artifactId> <version>2.2.6</version> <!-- 替换为兼容的稳定版本 --> <executions> <execution> <id>generate-docs</id> <phase>site</phase> <goals> <goal>process-asciidoc</goal> </goals> </execution> </executions> </plugin> </plugins> </build>排查并解决依赖冲突
执行mvn dependency:tree命令生成依赖树,查找org.asciidoctor和org.apache.maven.doxia相关依赖的版本冲突。如果发现不一致,在pom.xml的dependencyManagement节点强制指定统一版本:<dependencyManagement> <dependencies> <dependency> <groupId>org.apache.maven.doxia</groupId> <artifactId>doxia-core</artifactId> <version>1.12.0</version> <!-- 匹配插件要求的版本 --> </dependency> <dependency> <groupId>org.asciidoctor</groupId> <artifactId>asciidoctorj</artifactId> <version>2.5.10</version> <!-- 与插件版本兼容 --> </dependency> </dependencies> </dependencyManagement>清理Maven本地仓库缓存
本地仓库的依赖包损坏或版本混乱也可能引发该问题。执行mvn clean install -U强制更新依赖并清理缓存,或者手动删除本地仓库中org/asciidoctor和org/apache/maven/doxia相关目录后重新拉取依赖。同步Maven Site插件版本
Maven Site插件本身依赖Doxia,需确保maven-site-plugin版本与Asciidoctor插件兼容,比如使用3.12.0及以上版本,在pom.xml中明确指定:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <version>3.12.1</version> </plugin>验证文件配置正确性
简单检查/src/site/asciidoc/a.adoc的语法是否合规,/src/site/site.xml的站点配置是否正确,避免因文件解析异常触发错误路径。
内容的提问来源于stack exchange,提问作者Grim
相关产品推荐
相关产品推荐

