您好,登錄后才能下訂單哦!
本篇內容主要講解“如何解決maven:java8下當javadoc有編譯錯誤時無法生成.jar包的問題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何解決maven:java8下當javadoc有編譯錯誤時無法生成.jar包的問題”吧!
之前一直在java 7下編譯maven項目,遇到javadoc編譯提示代碼注釋中有錯誤(比如連接無效),也能正常生成javadoc jar包。但最近將編譯器換成java 8后,同樣的命令執行,遇到javadoc編譯錯誤,maven就中止執行,生成jar包失敗了。
在stackoverflow上找到這篇文章,才搞明白原因:《Maven is not working in Java 8 when Javadoc tags are incomplete》
原來是java 8的DocLint新特性造成的:
java 8中javadoc提供了一個新特性,允許程序能檢測到java 代碼注釋中的錯誤(之前的版本,javadoc調用方無法檢測到代碼注釋中的錯誤),默認情況下這個特性是打開的,所以maven執行編譯javadoc編譯時遇到代碼注釋中有錯誤,就會拋出異常,并中止執行。
最簡單的解決辦法:升級maven-javadoc-plugin插件版本到3.0.0以上,并添加<doclint>none</doclint>參數禁用該特性
示例如下
<plugins>
<plugin>
<!--引入javadoc插件 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<show>package</show>
<!-- 禁用java 8 的DocLint新特性,以確保當javadoc有編譯錯誤時,也能正常生成javadoc jar包-->
<doclint>none</doclint>
</configuration>
</plugin>
</plugins>
但實際測試發現,采用這種方式執行mvn javadoc:jar確實是有效的但在執mvn release:prepare做發布版本準備時,卻沒有生成javadoc jar 包,使用<additionalparam>-Xdoclint:none</additionalparam>代替doclint參數才算正常:
<plugins>
<plugin>
<!--引入javadoc插件 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<show>package</show>
<!-- 禁用java 8 的DocLint新特性,以確保當javadoc有編譯錯誤時,也能正常生成javadoc jar包-->
<additionalparam>-Xdoclint:none</additionalparam>
</configuration>
</plugin>
</plugins>
改成這樣后,在java 8下執行mvn release:prepare是正常了,但在java 7下會報錯誤:不支持的選項-Xdoclint:none。所以如果希望在java 7,java 8下都能正常執行release,需要使用profile來區分JDK版本。刪除前面在build/plugins中添加的javadoc插件,改為在pom.xml中添加profiles,如下:
</project>
....
<profiles>
<profile>
<id>doclint-java8-disable</id>
<!-- 指定profile只在JDK版本大于等于1.8時有效-->
<activation>
<jdk>[1.8,)</jdk>
</activation>
<build>
<pluginManagement>
<plugins>
<!--引入javadoc插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9</version>
<configuration>
<!-- 禁用java 8 的DocLint新特性,以確保當javadoc有編譯錯誤時,也能正常生成javadoc jar包-->
<additionalparam>-Xdoclint:none</additionalparam>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
</profiles>
</project>
參考資料
Maven is not working in Java 8 when Javadoc tags are incomplete
maven javadoc-mojo
java 8 doclint
DocLint is a new feature in Java 8
How to ignore Maven build erros due to JavaDoc with Java 8
---------------------
到此,相信大家對“如何解決maven:java8下當javadoc有編譯錯誤時無法生成.jar包的問題”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。