Javadoc タグが不完全な場合、Maven は Java 8 で動作しません。質問する

Javadoc タグが不完全な場合、Maven は Java 8 で動作しません。質問する

Maven を使用しているため、Javadoc タグが不完全な (たとえば、パラメーターが欠落している) プロジェクトをローカル リポジトリにビルドしてインストールできるようになりました。

しかし、Java 8 (1.8.0-ea-b90) に移行してからは、Maven はドキュメント タグの欠落に対して非常に厳しくなり、Javadoc が「完璧」ではないプロジェクトをビルドまたはインストールしようとすると、Javadoc の問題に関連する Javadoc エラーが多数表示されます。ローカル リポジトリでコンパイルしてインストールしようとしているプロジェクトの中には、私が制御できないサード パーティ プロジェクトもあります。そのため、これらのすべてのプロジェクトの Javadoc をすべて修正するという回避策は、私のシナリオでは実現可能ではないようです。

mvn clean package installこれは、プロジェクトで実行したときに表示される出力の一部です。

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.026s
[INFO] Finished at: Mon Apr 08 21:06:17 CEST 2013
[INFO] Final Memory: 27M/437M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9:jar (attach-javadocs) on project jpc: MavenReportException: Error while creating archive:
[ERROR] Exit code: 1 - /Users/sergioc/Documents/workspaces/heal/jpc/src/main/java/org/jpc/engine/prolog/PrologDatabase.java:10: error: @param name not found
[ERROR] * @param terms the terms to assert
[ERROR] ^
[ERROR] /Users/sergioc/Documents/workspaces/heal/jpc/src/main/java/org/jpc/engine/prolog/PrologDatabase.java:11: warning: no description for @return
[ERROR] * @return
[ERROR] ^

私の POM では、Javadoc Maven プラグインは次のように構成されています。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.9</version>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

前にも言ったように、Java 7 に戻すとすべて正常に動作します。これは、Java 8 で実行されている Maven に関連するバグでしょうか? Java 8 で動作させるにはどうすればよいでしょうか (つまり、プロジェクトの Javadoc をビルドして、そのコードをローカル リポジトリにインストールできるようにするには)? OSX で Maven 3.0.3 と 3.0.5 の両方でテストしました。

アップデート:

Javadoc プラグインの設定を変更した場合<failOnError>false</failOnError>(Martin に感謝):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.9</version>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

その後、プロジェクトはローカル リポジトリにインストールされます。ただし、Javadoc JAR はまだ生成されません。

この新しい構成でコンソールに表示される出力の一部は次のとおりです。

[エラー] MavenReportException: アーカイブの作成中にエラーが発生しました: 終了コード: 1 - /Users/....java:18: 警告: @param がありません... コマンド ラインは次の通りです: /Library/Java/Home/bin/javadoc @options @packages

'/Users/sergioc/Documents/workspaces/heal/minitoolbox/target/apidocs' ディレクトリに生成された Javadoc ファイルを参照してください。

org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeJavadocCommandLine(AbstractJavadocMojo.java:5043) org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeReport(AbstractJavadocMojo.java:1990) org.apache.maven.plugin.javadoc.JavadocJar.execute(JavadocJar.java:181) org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) で、org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) で、org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) で、org.apache.maven.cli.MavenCli.main(MavenCli.java:141) で、sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) で、sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) で、sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) で、java.lang.reflect.Method.invoke(Method.java:491) でorg.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)、org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)、org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)、org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) です。

Java 7 で動作していたときのように、ソースをビルドし、プロジェクトをインストールし、Javadoc JAR を 1 つのステップで生成する方法に関する回避策はありますか?

ベストアンサー1

最善の解決策は、javadoc エラーを修正することです。何らかの理由でそれが不可能な場合 (つまり、自動生成されたソース コード)、このチェックを無効にすることができます。

DocLintはJava 8の新機能です要約すると次のようになります。

開発サイクルの早い段階で、ソース コードに簡単にリンクできる方法で Javadoc コメントのエラーを検出する手段を提供します。

これはデフォルトで有効になっており、Javadocを生成する前に多くのチェックを実行します。Java 8では、指定に従ってこれをオフにする必要があります。このスレッドでこれを Maven 構成に追加する必要があります:

<profiles>
  <profile>
    <id>java8-doclint-disabled</id>
    <activation>
      <jdk>[1.8,)</jdk>
    </activation>
    <properties>
      <javadoc.opts>-Xdoclint:none</javadoc.opts>
    </properties>
  </profile>
</profiles>
<build>
  <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.9</version>
        <executions>
            <execution>
                <id>attach-javadocs</id>
                <goals>
                    <goal>jar</goal>
                </goals>
                <configuration>
                    <additionalparam>${javadoc.opts}</additionalparam>
                </configuration>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <reportPlugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <configuration>
                <additionalparam>${javadoc.opts}</additionalparam>
              </configuration>
            </plugin>
          </reportPlugins>
        </configuration>
      </plugin>
   </plugins>
</build>

maven-javadoc-plugin 3.0.0+の場合:置き換え

<additionalparam>-Xdoclint:none</additionalparam>

<doclint>none</doclint>

おすすめ記事