私は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に戻ってもすべて問題なく動作しています。おそらくこれは、MavenがJava 8で実行されていることに関連するバグですか? 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:警告:no @param ...コマンドラインは/ Library/Java/Home/bin/javadoc @optionsです@パッケージ
/ Users/sergioc/Documents/workspaces/heal/minitoolbox/target/apidocsディレクトリにある生成されたJavadocファイルを参照してください。
org.Apache.maven.plugin.javadoc.AbstractJavadocMojo.executeReport(AbstractJavadocMojo.html)at org.Apache.maven.plugin.javadoc.AbstractJavadocMojo.executeJavadocCommandLine(AbstractJavadocMojo.Java:5043) org.Apache.maven.lifecycle.internal.MojoExejoor.exeextorJava.orge(DefaultBuildPluginManager.Java:101).javadoc.JavadocJar.execute(JavadocJar.Java:181)(org.Apache.maven.plugin.DefaultBuildPluginManager.executeMojoで) org.Apacheのorg.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:145)のorg.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:153)にあります。 org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:59)at ma.Apache.maven.lifecycle.internal.Lifecycle。maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.Java:84) org.Apache.maven.lifecycle.internal.LifecycのsingleThreadedBuild(LifecycleStarter.Java:183) org.Apache.mavenのorg.Apache.maven.DefaultMaven.doExecute(DefaultMaven.Java:320)のleStarter.execute(LifecycleStarter.Java:161)org.Apache.mavenのleStarter.execute(LifecycleStarter.Java:161) org.Apache.maven.cli.MavenCli.main(MavenCli.Java:141)のorg.Apache.maven.cli.MavenCli.doMain(MavenCli.Java:196)の.cli.MavenCli.execute(MavenCli.Java:537) Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess.Java.html) Method.invoke(Method.Java:491)at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.Java:290)at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.Java: 230)org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.Java:409)at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.Java:352)
Java 7で作業していたときに、ソースをビルドし、プロジェクトをインストールし、Javadoc JARを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.xの場合:置換
<additionalparam>-Xdoclint:none</additionalparam>
と
<doclint>none</doclint>
Java 8とJava 7の両方でうまく動くようにする最も簡単な方法は、ビルドでプロファイルを使用することです。
<profiles>
<profile>
<id>doclint-Java8-disable</id>
<activation>
<jdk>[1.8,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<additionalparam>-Xdoclint:none</additionalparam>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
これは、使用されているJavaのバージョンに関係なく、doclintの警告を無視するための最も簡潔な方法です。わずかな変更を加えて、複数のプロファイルでプラグイン設定を複製する必要はありません。
<profiles>
<profile>
<id>doclint-Java8-disable</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.1</version>
<executions>
<execution>
<id>attach-javadocs</id> <!-- The actual id should be apparent from maven output -->
<configuration>
<additionalparam>${javadoc.opts}</additionalparam>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
Oracle/open jdk 6、7、8、11でテスト済み。
Pomファイルのグローバルプロパティセクションに追加します。
<project>
...
<properties>
<additionalparam>-Xdoclint:none</additionalparam>
</properties>
ここで他の回答で提供されている一般的な解決策(プラグインセクションにそのプロパティを追加する)は何らかの理由でうまくいきませんでした。グローバルに設定することによってのみ、javadoc jarを正常に構築できました。
<profiles>
<profile>
<id>disable-Java8-doclint</id>
<activation>
<jdk>[1.8,)</jdk>
</activation>
<properties>
<additionalparam>-Xdoclint:none</additionalparam>
</properties>
</profile>
</profiles>
POMにそれを追加するだけでいいのです。
これは基本的に @ ankonの答え と @ zappの答え です。
交換する
<additionalparam>-Xdoclint:none</additionalparam>
によって
<doclint>none</doclint>
maven-javadoc-plugin
設定のみをオーバーライドしても、mvn site
の問題は解決されません(例えばリリース段階で使用されます)。これが私がしなければならなかったことです:
<profile>
<id>doclint-Java8-disable</id>
<activation>
<jdk>[1.8,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<additionalparam>-Xdoclint:none</additionalparam>
</configuration>
</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>-Xdoclint:none</additionalparam>
</configuration>
</plugin>
</reportPlugins>
</configuration>
</plugin>
</plugins>
</build>
</profile>
DocLintをオフにするだけでは、少なくとも長期的には解決できないと思います。 Javadocがもう少し厳密になっているので、ビルド問題を解決する正しい方法は、根本的な問題を解決することです。はい、最終的にこれらのソースコードファイルを修正する必要があります。
これまで見逃していた可能性があることに注意する必要があります。
{@link }
sが無効です。 (@see
のような同様のタグにも同じことが言えます)@author
値です。これは以前は受け入れられていました:@author John <[email protected]>
が、括弧がエスケープされていなかったために、もう受け入れられませんでした。ソースコードファイルを修正し、Javadocを失敗せずにビルドできるようになるまでビルドし続けるだけです。厄介ですが、個人的には、自分が作成したJavadocが実際に私が意図しているものであると自信が持てるようになるので、自分のプロジェクトをDocLintレベルに上げたときには好きです。
あなたが自分で作成していない何らかのソースコードでJavadocを生成している場合、もちろん問題はあります。 wsimport 。実際にJDK8をリリースする前に、OracleがJDK8準拠のための独自のツールを用意していなかったのは奇妙なことです。 と思われますが、Java 9 まで修正される予定はありません。この特定の場合に限り、このページの他の場所に記載されているようにDocLintをオフにすることをお勧めします。
failOnError
プロパティ( プラグインのドキュメント を参照)をfalse
に設定してみてください。
<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>
<failOnError>false</failOnError>
</configuration>
</execution>
</executions>
</plugin>
ドキュメントからわかるように、デフォルト値はtrue
です。
それはmavenコマンドを実行するために使用されるJREのバージョンに依存するので、あなたはおそらくあなたのpom.xmlのデフォルトでDocLint
を無効にしたくないでしょう
したがって、コマンドラインからスイッチ-Dadditionalparam=-Xdoclint:none
を使用できます。
例:mvn clean install -Dadditionalparam=-Xdoclint:none
設定プロパティ名は、maven-javadoc-pluginの最新バージョン3.0.0で変更されました。
したがって、<additionalparam>は機能しません。そのため、以下のように修正する必要があります。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<doclint>none</doclint>
</configuration>
</plugin>
Maven-javadoc-plugin 3.0.0以降では、追加のJavadocオプションを設定するために additionalJOption を使用しているはずです。次のプロパティを追加する必要があります。
<properties>
...
<additionalJOption>-Xdoclint:none</additionalJOption>
...
<properties>
また、maven-javadoc-pluginのバージョンを3.0.0以上としてください。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.0</version>
</plugin>
ですから、私がしなかった時間を節約し、うまくいかないようでしたら試してみてください。
<additionalJOption>-Xdoclint:none</additionalJOption>
タグは新しいバージョンに変更されています。
他の答えに洞察を加えたい
私の場合
-Xdoclint:なし
うまくいきませんでした。
まず始めに、私のプロジェクトでは、javadocはまったく必要ありませんでした。必要なプラグインだけがビルド時に依存していました。
だから、私の問題を解決するための最も簡単な方法は次のとおりです。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
下記に追加
Java_TOOL_OPTIONS = -DadditionalJOption = -Xdoclint:なし
jenkinsジョブ設定>ビルド環境>ビルドプロセスへの環境変数の挿入>プロパティコンテンツ
Jenkins Mavenによるコード構築の問題を解決しました:-)
これが助けになるかどうかはわかりませんが、私もごく最近oozie-4.2.0バージョンでまったく同じ問題に直面しました。上記の答えを読み終えた後、コマンドラインでMavenオプションを追加しました。それで、ここで共有するだけです。
私はJava1.8.0_77を使っていますが、Java 1.7では試していません
bin/mkdistro.sh -DskipTests - Dmaven.javadoc.opts = ' - Xdoclint:-html'
不足している@param
タグおよび@return
タグを無視するには、missing
doclintグループ を無効にするだけで十分です。このようにして、Javadocはまだより高いレベルと構文の問題がないかチェックされます。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<doclint>all,-missing</doclint>
</configuration>
</plugin>
これはプラグインバージョン3.0以降用です。
私はパーティーに少し遅刻しました、しかし私も回避策を探すことを余儀なくされ、ここで終わり、そしてそれを見つけました。
これは私のために働くものです: -
export Java_TOOL_OPTIONS=-DadditionalJOption=-Xdoclint:none
それからMavenのビルド、Linuxディストリビューションのビルドなどを始めましょう。Mavenconfigファイルの修正は必要ないというのはいいことです。たくさんのCentosrpmパッケージを再構築するために、本当に深くしなければなりませんでした。