[解決済み】Java 8でJavadocタグが不完全な場合、Mavenは動作しません。
質問
私は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] ^
Javadoc Mavenプラグインは、私のPOMでこのように設定されています。
<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の両方でテストしました。
UPDATEしてください。
Javadocプラグインの設定を
<failOnError>false</failOnError>
(マーティンに感謝)。
<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はまだ生成されていません。
この新しい構成でコンソールに表示される出力の断片は、次のとおりです。
[ERROR] MavenReportException: アーカイブの作成中にエラーが発生しました。 終了 コードで指定します。1 - /Users/....java:18: warning: no @param ... コマンドライン でした。/Library/Java/Home/bin/javadoc @options @packages です。
生成されたJavadocファイルについては '/Users/sergioc/Documents/workspaces/heal/minitoolbox/target/apidocs' とする。 のディレクションを行います。
で 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) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)を実行します。 で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:491) at 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ステップで行う方法について、何か回避策はありますか?
解決方法は?
最良の解決策は、javadocエラーを修正することでしょう。何らかの理由でそれが不可能な場合 (たとえばソースコードの自動生成など)、 このチェックを無効にすることができます。
DocLintはJava 8の新機能です。 と要約される。
<ブロッククオートJavadocコメントのエラーを早期に検出する手段を提供する。 開発サイクルの中で、簡単にリンクさせることができます。 ソースコード
これはデフォルトで有効になっており、Javadocsを生成する前に多くのチェックを実行します。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>
関連
-
[解決済み] java.sql.SQLException: ORA-00933: SQL コマンドが正しく終了していません。
-
[解決済み] Java Genericメソッドをstaticにするには?
-
[解決済み] プロトコルハンドラの初期化に失敗しました。
-
[解決済み] javax.naming.NameNotFoundException
-
[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
-
[解決済み] アニメーションGIFの表示
-
[解決済み] java.lang.ClassCastException: java.lang.Long を java.lang.Integer にキャストできない(java 1.6
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] java.lang.OutOfMemoryError: MavenにおけるJavaのヒープ空間
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.sql.SQLException: ORA-00933: SQL コマンドが正しく終了していません。
-
[解決済み] JVMフラグCMSClassUnloadingEnabledは、実際に何をするのですか?
-
[解決済み] Jdbctemplate の文字列に対するクエリです。EmptyResultDataAccessException: 不正な結果サイズ:期待値1、実際0
-
[解決済み] JavaでFileFilterを作るには?
-
[解決済み] Java Genericメソッドをstaticにするには?
-
[解決済み] 警告: コンテキスト初期化中に例外が発生 - 更新の試みはキャンセルされました。
-
[解決済み] 最も近い整数への切り捨て - 私は不正をしているのでしょうか、それともこれは十分すぎるほど適切なのでしょうか?
-
[解決済み] Apache Camelのログに簡単なテキストを記録する
-
[解決済み] javaでAnnotation Inheritanceのようなものはあるのでしょうか?
-
[解決済み] Mavenを使用する際にJava 8のJavadocの厳しさを回避する方法