maven-javadoc-plugin を使用して JavaDoc Java アーカイブ リソースを生成すると、次の警告が表示されます。
[WARNING] javadoc: warning - Error reading file: /maven-javadoc-example/target/javadoc-bundle-options/package-list
Apache Maven JavaDoc プラグインの mojo ページを確認しました:
javadoc プラグイン
フラグを使用してデバッグ情報を確認しました-X
:
mvn javadoc:jar@main-javadoc -X
Oracle Java Tool ページ (JDK12) を確認しました:
java ドキュメント
これは、JDK8 に対して製品コードをコンパイルしながら、JDK11 に対してテスト コードを実行/コンパイルできるように Maven プロジェクトをセットアップしていることと関係があると思われます (Maven コンパイラ プラグインの構成を削除すると警告は表示されなくなりますが、JDK11 に対してのみコンパイルする他のプロジェクトでは警告が表示されます)。
この警告を再現するための最小限の Apache Maven POM を次に示します (ソース パスに少なくとも 1 つの Java クラス ソースが必要であることに注意してください)。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.superuser.maven</groupId>
<artifactId>maven-javadoc-example</artifactId>
<version>1.0.0</version>
<properties>
<!-- Settings: maven-resource-plugin -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- Settings: maven-compiler-plugin -->
<maven.compiler.main-jdk>8</maven.compiler.main-jdk>
<maven.compiler.test-jdk>11</maven.compiler.test-jdk>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<executions>
<execution>
<id>default-compile</id>
<phase>none</phase>
</execution>
<execution>
<id>main-compile</id>
<phase>compile</phase>
<configuration>
<source>${maven.compiler.main-jdk}</source>
<target>${maven.compiler.main-jdk}</target>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
<compilerArgs>
<arg>-Xlint:all,-processing,-cast,-serial,-try</arg>
</compilerArgs>
<excludes>
<exclude>module-info.java</exclude>
</excludes>
</configuration>
</execution>
<execution>
<id>default-testCompile</id>
<phase>none</phase>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<release>${maven.compiler.test-jdk}</release>
</configuration>
</execution>
</executions>
<configuration>
<source>${maven.compiler.test-jdk}</source>
<target>${maven.compiler.test-jdk}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>main-javadoc</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<sourceFileExcludes>module-info.java</sourceFileExcludes>
</configuration>
</execution>
</executions>
<configuration>
<quiet>true</quiet>
<failOnWarnings>false</failOnWarnings>
<failOnError>true</failOnError>
</configuration>
</plugin>
</plugins>
</build>
</project>
実稼働コードとテスト コードを (おそらく) 2 つの異なる JDK API に対してコンパイルする単一の Maven モジュールを保持したまま、この警告を解決する方法はありますか?
編集:
- JDK や %JAVA_HOME% を変更しても、この問題は解決されません。
- module-info.java ファイルを追加/削除しても、この問題は解決されません。
- 2 つの異なる JDK API に対してコンパイルしたことが原因であると疑われる理由を追加しました。
- JDK8 に対してコンパイル/パッケージ化/javadoc を実行するときに JavaDoc がエラーにならないように実行定義を修正しました。
答え1
私の場合は、ソースそして目標Maven コンパイラ プラグインの一般設定からタグを削除し、新しい実行設定に配置します。
POM は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.superuser.maven</groupId>
<artifactId>maven-javadoc-example</artifactId>
<version>1.0.0.Final</version>
<properties>
<!-- Settings: maven-resource-plugin -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- Settings: maven-compiler-plugin -->
<maven.compiler.main-jdk>8</maven.compiler.main-jdk>
<maven.compiler.test-jdk>11</maven.compiler.test-jdk>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<executions>
<execution>
<id>default-compile</id>
<phase>none</phase>
<configuration>
<release>${maven.compiler.test-jdk}</release>
</configuration>
</execution>
<execution>
<id>main-compile</id>
<phase>compile</phase>
<configuration>
<release>${maven.compiler.test-jdk}</release>
</configuration>
</execution>
<execution>
<id>main-compile-jdk8</id>
<phase>none</phase>
<configuration>
<source>${maven.compiler.main-jdk}</source>
<target>${maven.compiler.main-jdk}</target>
<excludes>
<exclude>module-info.java</exclude>
</excludes>
</configuration>
</execution>
<execution>
<id>default-testCompile</id>
<phase>none</phase>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<release>${maven.compiler.test-jdk}</release>
</configuration>
</execution>
</executions>
<configuration>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
<compilerArgs>
<arg>-Xlint:all,-processing,-cast,-serial,-try</arg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>main-javadoc</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<sourceFileExcludes>module-info.java</sourceFileExcludes>
</configuration>
</execution>
</executions>
<configuration>
<quiet>true</quiet>
<failOnWarnings>false</failOnWarnings>
<failOnError>true</failOnError>
</configuration>
</plugin>
</plugins>
</build>
</project>