java - maven javadoc :fix fails to autofix docs

标签 java maven maven-javadoc-plugin

我正在将 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/

相关文章:

java - 如何递归复制整个目录,包括Java中的父文件夹

java - 如何在不使用js的情况下在java中对json进行字符串化

intellij-idea - "No public or protected classes found to document"带有重音符号的路径错误

java - 如何在 google checkstyle.xml 中的方法之前添加一个选项卡

java - 使用 Maven 构建 Soap web 项目

java - maven-javadoc-插件错误javadoc : error - cannot read Input length = 1 with non-ASCII characters in directory name

java - Maven:如何配置javadoc来生成所有私有(private)和包

java - AdMob 加载测试广告而非真实广告

java - AspectJ - 实现给定接口(interface)的类的静态类型间声明

maven - 如何使用maven操作Manifest文件