在升級JDK至1.8之后,使用Maven-javadoc-plugin插件打包報錯,[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.10.4:jar (attach-javadocs) on project 詳細信息如下
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.10.4:jar (attach-javadocs) on project StatisticsReport: MavenReportException: Error while generating Javadoc:
[ERROR] Exit code: 1 - D:\Multi-module-project\StatisticsReport\src\main\java\com\yuewen\statistics\report\service\db\PullData.java:29: 警告: @param 沒有說明
[ERROR] @param preparedStatement
[ERROR] ^
[ERROR] D:\Multi-module-project\StatisticsReport\src\main\java\com\yuewen\statistics\report\service\db\PullData.java:30: 警告: @param 沒有說明
[ERROR] @param params
[ERROR] ^
[ERROR] D:\Multi-module-project\StatisticsReport\src\main\java\com\yuewen\statistics\report\service\db\PullData.java:31: 警告: @return 沒有說明
[ERROR] @return
[ERROR] ^
[ERROR] D:\Multi-module-project\StatisticsReport\src\main\java\com\yuewen\statistics\report\service\db\PullData.java:32: 警告: @throws 沒有說明
[ERROR] @throws SQLException
[ERROR] ^
[ERROR] D:\Multi-module-project\StatisticsReport\src\main\java\com\yuewen\statistics\report\service\db\PullData.java:34: 警告: logFlag沒有 @param
[ERROR] public static ResultSet pullData(PreparedStatement preparedStatement, boolean logFlag, String… params) throws SQLException {
[ERROR] ^
[ERROR] D:\Multi-module-project\StatisticsReport\src\main\java\com\yuewen\statistics\report\service\db\PullData.java:51: 警告: @param 沒有說明
[ERROR] @param preparedStatement
[ERROR] ^
[ERROR] D:\Multi-module-project\StatisticsReport\src\main\java\com\yuewen\statistics\report\service\db\PullData.java:52: 警告: @param 沒有說明
[ERROR] @param params
[ERROR] ^
[ERROR] D:\Multi-module-project\StatisticsReport\src\main\java\com\yuewen\statistics\report\service\db\PullData.java:53: 警告: @return 沒有說明
[ERROR] * @return
[ERROR] ^
經查得知,在JDK 8中,Javadoc中添加了doclint,而這個工具的主要目的是旨在獲得符合W3C HTML 4.01標准規范的HTML文檔,在JDK 8中,已經無法獲取如下的Javadoc,除非它滿足doclint:
- 不能有自關閉的HTML tags,例如
<br/>或者<a id="x"/> - 不能有未關閉的HTML tags,例如有
<ul>而沒有</ul> - 不能有非法的HTML end tags,例如
</br> - 不能有非法的HTML attributes,需要符合doclint基於W3C HTML 4.01的實現
- 不能有重復的HTML id attribute
- 不能有空的HTML href attribute
- 不能有不正確的嵌套標題,例如類的文檔說明中必須有
<h3>而不是<h4> - 不能有非法的HTML tags,例如
List<String>需要用<>對應的實體符號 - 不能有損壞的
@link references - 不能有損壞的
@param references,它們必須匹配實際的參數名稱 - 不能有損壞的
@throws references,第一個詞必須是一個類名稱
注意違反這些規則的話,將不會得到Javadoc的輸出。
一種解決辦法就是關閉doclint,如果你在Maven中運行,你需要使用additionalparam設置:
<profiles> <profile> <id>disable-javadoc-doclint</id> <activation> <jdk>[1.8,)</jdk> </activation> <properties> <additionalparam>-Xdoclint:none</additionalparam> </properties> </profile> </profiles>
或者是添加到maven-javadoc-plugin中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.4</version>
<configuration>
<encoding>${chartset.UTF8}</encoding>
<aggregate>true</aggregate>
<charset>${chartset.UTF8}</charset>
<docencoding>${chartset.UTF8}</docencoding>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<additionalparam>-Xdoclint:none</additionalparam>
</configuration>
</execution>
</executions>
</plugin>
