2015-04-05 110 views
3

使用maven-javadoc-plugin生成測試Javadoc時,我突然發現多個錯誤,指出Javadoc插件無法從我的主代碼庫中找到任何類。在運行test-javadoc目標時,類路徑僅包含src/test文件夾中的類;插件中沒有src/main的類可見。是否有解決maven-javadoc-plugin bug MJAVADOC-414的解決方法?

這個錯誤發生在maven-javadoc-plugin版本2.10,2.10.12.10.2上。此錯誤是官方認可的錯誤MJAVADOC-414,您可以查看錯誤報告here。官方錯誤報告列出了一個解決方法,將插件降級到2.9.1版本,我已經證實這是針對錯誤的成功解決方法。值得注意的是,這個bug目前被列爲固定的,並且應該在下一版maven-javadoc-plugin時被淘汰,這可能是版本2.112.10.3

但是,我試圖找到一個解決方案MJAVADOC-414,不涉及降級3發行版本的矯枉過正。有沒有人知道一種解決方法,可以以不涉及降級的另一種方式成功消除有關缺少類引用的錯誤消息?

+1

這是一個很好的問答,兩者都是+1。但考慮修改你的「文本塊」格式。使用段落和空白區域使其更清晰。 – 2015-04-05 11:43:33

+0

感謝您的投票和建議;我用段落更新了Q和A. – 2015-04-05 11:49:58

+0

你有機會測試maven-javadoc-plugin版本2.10.3的SNAPSHOT版本嗎?所以我們可以確定問題解決了嗎?所以我可以在下週開始發佈... – khmarbaise 2015-04-05 13:32:35

回答

2

,我現在使用的成功與Maven的Javadoc的插件2.10.2涉及添加一個小的配置,以插件的所有測試相關的處決,包括以下目標的潛在非降級的解決方法:test-javadoctest-javadoc-noforktest-aggregatetest-jartest-aggregate-jar,test-fixtest-resource-bundle

一旦你已經確定了執行靶向上市的目標,你只需添加以下配置到執行:

<!-- Additional Dependencies workaround for MJAVADOC-414 --> 
<additionalDependencies> 
    <additionalDependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>${project.artifactId}</artifactId> 
     <version>${project.version}</version> 
    </additionalDependency> 
</additionalDependencies> 

此變通方法使用additionalDependencies標籤添加插件的執行期間的依賴到classpath中。添加的依賴項是使用groupId,artifactId和version的項目變量定義的。實際上,我們將將當前POM定義的項目添加到maven-javadoc-plugin測試執行的類路徑中。

通過相對變量定義依賴關係使得這個解決方案對於單個POM和多個POM項目都是安全的。該解決方案也可以成功與插件管理聲明一起使用。如果您不小心將此解決方案添加到非測試階段相關的執行中,它應該是無害的,但它可能是重複並可能增加執行時間。