当前位置: 首页 > 知识库问答 >
问题:

如何在使用Maven时绕过更严格的Java8 Javadoc

冷善
2023-03-14

您很快就会意识到,JDK8在Javadoc方面要严格得多(默认情况下)。(链接-参见最后一个项目符号)

如果您从未生成任何Javadoc,那么您当然不会遇到任何问题,但是像Maven发布流程这样的事情,可能还有您的CI构建,在使用JDK7时会突然失败。检查Javadoc工具的exit值的任何操作现在都将失败。与JDK7相比,JDK8 Javadoc在警告方面可能也更冗长,但这不是本文的范围。我们正在讨论错误

这个问题的存在是为了收集关于该如何做的建议。最好的方法是什么?是否应该在源代码文件中一劳永逸地修复这些错误?如果您有一个庞大的代码库,这可能是一个很大的工作。还有什么其他选择?

同时也欢迎你发表评论,告诉你以前会通过的那些现在失败的故事。

wsimport工具是用于创建web服务使用者的代码生成器。它包含在JDK中。即使使用JDK8中的wsimport工具,它仍然会生成无法使用JDK8中的javadoc编译器编译的源代码。

/**
 * My very best class
 * @author John <john.doe@mine.com> 
 */

由于<字符,此操作现在失败。严格地说,这是有道理的,但不是很宽恕。

Javadoc中的HTML表?请考虑以下有效HTML:

/**
 *
 * <table>
 *   <tr>
 *      <td>Col1</td><td>Col2</td><td>Col3</td>
 *   </tr>
 * </table>
 */

这将失败,出现错误消息no summary or caption for table。一个快速的解决方法是这样做:

/**
 *
 * <table summary="">
 *   <tr>
 *      <td>Col1</td><td>Col2</td><td>Col3</td>
 *   </tr>
 * </table>
 */
  1. 无效链接,例如{@link notexist}
  2. 格式错误的HTML,例如,如果...
  3. 总是返回 true

链接:

Stephen Colebourne写的关于这个主题的优秀博客。


共有1个答案

林鸿飞
2023-03-14

目前,在使用Maven时,我知道的围绕更严格的Java8Javadoc工作的最简单的方法是停用它。

由于参数-xdoclint:none只存在于Java8中,因此定义此参数将破坏任何其他Java的构建。为了防止这种情况,我们可以创建一个仅对Java8有效的配置文件,确保我们的解决方案不管Java版本如何都能工作。

<profiles>
    <profile>
        <id>disable-java8-doclint</id>
        <activation>
            <jdk>[1.8,)</jdk>
        </activation>
        <properties>
            <additionalparam>-Xdoclint:none</additionalparam>
        </properties>
    </profile>
</profiles>

只要把它加到你的POM上,你就可以走了。

-xdoclint:none

谢谢@bantercz!

 类似资料:
  • 问题内容: 您会很快意识到JDK8在Javadoc方面要严格得多(默认情况下)。(链接 -请参阅最后一个要点) 如果您从不生成任何Javadoc,那么您当然不会遇到任何问题,但是Maven发布过程之类的内容以及您的CI构建可能会突然失败,因为它们在JDK7上可以正常使用。现在,任何检查Javadoc工具的退出值的操作都将失败。与JDK7相比,JDK8 Javadoc可能也更冗长,但这不是这里的范围

  • 现在JSCS项目与ESLint合并,JSCS linter被弃用,我仍然很难找到替换某些规则的方法。具体来说,JSCS有一条规则,它的作用是:要求您在之后添加新行。我搜索了ESLint规则,但找不到等效规则。是否有一个插件可以为ESLint添加类似的规则?

  • 问题内容: 我已经开始探索Node.js,并编写了许多演示Web应用程序,以了解Node.js,Express.js,jade等的流程。 但是我最近遇到的一件事是,该语句作为每个函数和每个文件中的第一行。 Node.js对它的解释如何? 问题答案: 基本上,它启用严格模式。 严格模式是一项功能,使您可以在“严格”的操作环境中放置程序或功能。在严格的操作上下文中,方法窗体像以前一样将此绑定到对象。函

  • 我是新来的。所以我想把这段代码从react-router-dom-v4升级到react-router-dom-v6。我知道我们不能在v6中使用this . props . match . params . room code,我想知道如何升级它。任何帮助都将不胜感激。

  • 我已经使用Spring Security两周了,除了匿名用户和会话超时之外,它工作得很好。 用例#1 null 如果他们的会话超时,将显示invalidSessionUrl页面,并指示用户登录。 我已经阅读了大量的SO和博客文章,但我似乎找不到用例1的解决方案。我使用的是Spring4.1.6.RELEASE、Spring Security 4.0.2 RELEASE和Tomcat8。 下面是我的

  • 本文向大家介绍php 如何设置一个严格控制过期时间的session,包括了php 如何设置一个严格控制过期时间的session的使用技巧和注意事项,需要的朋友参考一下 1.php session 有效期 PHP的session有效期默认是1440秒(24分钟),如果客户端超过24分钟没有刷新,当前session会被回收,失效。 当用户关闭浏览器,会话结束,session也会失效。 可以修改php.