我正在将 MWS Feeds API 项目从 Ant 迁移到 Maven。见 MWS Feeds Maven port .
在执行 mvn javadoc:fix
时,我总是遇到同样的错误,这对我来说毫无意义。 .
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:3.2.0:fix (default-cli) on project amazon-mws-feeds-maven: Execution default-cli of goal org.apache.maven.plugins:maven-javadoc-plugin:3.2.0:fix failed: A required class was missing while executing org.apache.maven.plugins:maven-javadoc-plugin:3.2.0:fix: com/amazonaws/mws/feeds/model/ReportInfo (wrong name: com/amazonaws/mws/feeds/model//ReportInfo)
我的Maven版本:
Java version: 11.0.2, vendor: Oracle Corporation, runtime: /Users/dmytro/.sdkman/candidates/java/11.0.2-open
Default locale: en_GB, platform encoding: UTF-8
OS name: "mac os x", version: "10.15.6", arch: "x86_64", family: "mac"
我该如何调试和修复它?我在 StackOverflow 上搜索,通过自然搜索进行搜索,然后运行 mvn -X clean install
但到目前为止还没有结果。
最佳答案
假设
错误消息暗示类型解析失败(缺少类),这似乎是因为插件试图解析一个稍微无效的路径(注意“错误名称:com/amazonaws/mws/feeds/model//”中的双斜杠)报告信息”)。
识别问题
我从 mvn -X javadoc:fix
开始以启用调试。输出非常有帮助:
[DEBUG] Analyzing com.amazonaws.mws.feeds.model.GetFeedSubmissionListByNextTokenResult
[INFO] Saving changes to com.amazonaws.mws.feeds.model.GetFeedSubmissionListByNextTokenResult
[DEBUG] Analyzing com.amazonaws.mws.feeds.model.UpdateReportAcknowledgementsResult
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
最后一个成功处理的类是 GetFeedSubmissionListByNextTokenResult
(处理顺序并不总是相同,但这无关紧要)但是 UpdateReportAcknowledgementsResult
失败的。现在我们可以专注于这个类。对堆栈跟踪的进一步调查显示,在插件修复(替换)链接标签(熟悉的
{@link ClassName}
javadoc 标签)时发生了异常: at com.thoughtworks.qdox.type.TypeResolver.resolveTypeInternal (TypeResolver.java:187)
at com.thoughtworks.qdox.type.TypeResolver.resolveType (TypeResolver.java:119)
at org.apache.maven.plugins.javadoc.AbstractFixJavadocMojo.replaceLinkTags (AbstractFixJavadocMojo.java:1858)
at org.apache.maven.plugins.javadoc.AbstractFixJavadocMojo.updateJavadocComment (AbstractFixJavadocMojo.java:1808)
at org.apache.maven.plugins.javadoc.AbstractFixJavadocMojo.updateJavadocComment (AbstractFixJavadocMojo.java:1756)
at org.apache.maven.plugins.javadoc.AbstractFixJavadocMojo.updateEntityComment (AbstractFixJavadocMojo.java:1632)
at org.apache.maven.plugins.javadoc.AbstractFixJavadocMojo.fixMethodComment (AbstractFixJavadocMojo.java:1486)
at org.apache.maven.plugins.javadoc.AbstractFixJavadocMojo.processFix (AbstractFixJavadocMojo.java:1100)
现在我们知道要在该类中搜索什么。根本原因
真正的问题很明显,例如在 UpdateReportAcknowledgementsResult:147
// @param values a {@link .ReportInfo} object.
QDOX 的 TypeResolver 没有正确处理类名之前的那个点。一旦我删除了所有 {@link .X}
发生,插件成功执行。我的猜测是这些点是在大规模查找和替换操作中错误地放在那里的。我的一个 friend 曾经做过类似的事情......
关于java - maven javadoc :fix fails to autofix docs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63215279/