在升級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>