Maven を使用する際に、より厳格な Java 8 Javadoc を回避する方法 質問する

Maven を使用する際に、より厳格な Java 8 Javadoc を回避する方法 質問する

Javadoc に関しては、JDK8 の方が (デフォルトで) はるかに厳格であることがすぐにわかるでしょう。(リンク- 最後の箇条書きを参照)

Javadoc をまったく生成しない場合は、もちろん問題は発生しませんが、Maven リリース プロセスや CI ビルドなどが、JDK7 では問題なく動作していたのに突然失敗する可能性があります。Javadoc ツールの終了値をチェックするものはすべて、今後は失敗します。JDK8 Javadoc は、warningsJDK7 と比較して の点でもおそらくより冗長ですが、ここではその点を取り上げません。 について話しているのですerrors

この質問は、この問題の対処方法に関する提案を集めるために存在します。最善のアプローチは何でしょうか? これらのエラーは、ソース コード ファイルで一度で完全に修正する必要がありますか? コード ベースが巨大な場合、これは大変な作業になる可能性があります。他にどのようなオプションがありますか?

以前なら通っていたのに今は通らないという話もコメントに残してください。

失敗の恐怖物語

wsimportツール

wsimportツールは、Webサービスコンシューマを作成するためのコードジェネレータです。これはJDKに含まれています。JDK8wsimportのツールを使用しても、ソースコードが生成されます。JDK8のjavadocコンパイラではコンパイルできない

@著者タグ

3〜4 年前のソース コード ファイルを開くと、次のようになります。

/**
 * My very best class
 * @author John <[email protected]> 
 */

これは、< 文字のせいで失敗します。厳密に言えば、これは正当化されますが、あまり寛容ではありません。

HTML テーブル

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>
 */

しかし、なぜこれが Javadoc ツールからの stop-the-world エラーになるのか私には理解できません。

今ではより明白な理由で失敗するもの

  1. 無効なリンク、例:{@link notexist}
  2. 不正なHTML、例:always returns <code>true<code> if ...

アップデート

リンク:

素晴らしいこのテーマに関するブログによるスティーブン・コールボーン

ベストアンサー1

今のところ、私が知っている最も簡単な方法はMaven を使用する場合、より厳格な Java 8 Javadoc を回避するそれを無効にしています。

このパラメータは-Xdoclint:noneJava 8 にのみ存在するため、このパラメータを定義すると他の Java のビルドが壊れます。これを防ぐには、Java 8 でのみアクティブになるプロファイルを作成し、Java のバージョンに関係なくソリューションが機能するようにします。

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

これを POM に追加するだけで準備完了です。


maven-javadoc-plugin 3.0.0 ユーザーの場合:

交換する

<additionalparam>-Xdoclint:none</additionalparam>

による

<doclint>none</doclint>

@banterCZ ありがとう!

おすすめ記事