是否有maven-javadoc-plugin bug MJAVADOC-414的解决方法?

时间:2015-04-05 11:39:20

标签: java maven testing javadoc maven-javadoc-plugin

使用maven-javadoc-plugin生成测试Javadoc时,我突然遇到多个错误,指出Javadoc插件无法从我的主代码库中找到任何类。在运行test-javadoc目标时,类路径仅包含src/test文件夹中的类;此插件无法显示src/main中的任何类。

maven-javadoc-plugin版本2.102.10.12.10.2上会出现此错误。此错误是官方认可的错误MJAVADOC-414,您可以查看错误报告here。官方错误报告列出了一个解决方法,涉及将插件降级到版本2.9.1,我已经确认这是一个成功的错误解决方法。值得注意的是,该bug目前已列为已修复,应在下一版maven-javadoc-plugin中删除,该版本可能是版本 2.11 2.10.3

但是,我正在尝试找到MJAVADOC-414的解决方法,该方法不涉及降级3个版本的过度杀伤。有没有人知道一种解决方法,它会以另一种不涉及降级的方式成功消除有关缺少类引用的错误错误消息?

1 个答案:

答案 0 :(得分:2)

我目前与maven-javadoc-plugin 2.10.2成功使用的潜在非降级解决方法涉及为插件的所有与测试相关的执行添加一个小配置,包括以下目标:test-javadoctest-javadoc-noforktest-aggregatetest-jartest-aggregate-jartest-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标记在插件执行期间向类路径添加依赖项。添加的依赖项是使用groupId,artifactId和version的项目变量定义的。实际上,我们将当前POM定义的项目添加到maven-javadoc-plugin测试执行的类路径中。

通过相对变量定义依赖关系使得此解决方案对于单个POM和多个POM项目都是安全的。此解决方案还可以成功与pluginManagement声明一起使用。如果您不小心将此解决方案添加到非测试阶段相关的执行中,它应该是无害的,但它可能是重复的并且可能会增加执行时间。