当Javadoc标记不完整时,Maven不能在Java8中工作

自从使用Maven以来,我已经能够在本地存储库中构建和安装具有不完整Javadoc标记(例如,缺少参数)的项目

然而,由于我迁移到了Java8(1.8.0-ea-b90),Maven对缺少文档标记非常严格,当我试图构建或安装一个Javadoc并不“完美”的项目时,它会向我显示许多与Javadoc问题相关的Javadoc错误。我试图在本地存储库中编译和安装的一些项目是我无法控制的第三方项目。因此,在我的场景中,仅仅修复所有这些项目中的所有javadoc似乎是不可行的

这是我在项目中执行mvn clean package install时看到的输出的一小部分:

[INFO]------------------------------------------------------------------------
[信息]生成失败
[信息]------------------------------------------------------------------------
[信息]总时间:9.026s
[信息]完成时间:2013年4月8日星期一21:06:17
[信息]最终内存:27M/437M
[信息]------------------------------------------------------------------------
[错误]未能在项目jpc:MavenReportException:创建存档时执行目标org.apache.maven.plugins:maven javadoc plugin:2.9:jar(附加javadocs):
[错误]退出代码:1-/Users/sergioc/Documents/workspace/heal/jpc/src/main/java/org/jpc/engine/prolog/PrologDatabase.java:10:错误:@param name未找到
[错误]*@param terms要断言的术语
[错误]^
[错误]/Users/sergioc/Documents/workspace/heal/jpc/src/main/java/org/jpc/engine/prolog/PrologDatabase.java:11:警告:没有@return的说明
[错误]*@return
[错误]^

Javadoc Maven插件在我的POM中的配置如下:

<插件>
<groupId>org.apache.maven.plugins&lt/groupId>
<artifactId>maven javadoc插件&lt/artifactId>
<版本>2.9&lt/版本>
<执行>
<执行>
<id>附加javadocs&lt/id>
<目标>
<目标>jar&lt/目标>
&lt/目标>
&lt/执行>
&lt/执行>
&lt/插件>

正如我之前所说的,如果我回到Java7,一切都很好。
也许这是一个与运行在Java8中的Maven相关的bug?
我如何使用Java8使其工作(即,能够构建项目的Javadoc并在本地存储库中安装其代码)?
我已经在OSX中使用Maven 3.0.3和3.0.5进行了测试

更新:

如果我用更改Javadoc插件配置<故障诊断仪>假&lt/故障诊断仪&gt(谢谢Martin):

<插件>
<groupId>org.apache.maven.plugins&lt/groupId>
<artifactId>maven javadoc插件&lt/artifactId>
<版本>2.9&lt/版本>
<执行>
<执行>
<id>附加javadocs&lt/id>
<目标>
<目标>jar&lt/目标>
&lt/目标>
&lt/执行>
&lt/执行>
&lt/插件>

然后将项目安装到我的本地存储库中。但是,Javadoc JAR仍然没有生成

我在控制台中看到的具有此新配置的输出片段是:

[错误]MavenReportException:创建存档时出错:退出
代码:1-/Users/…java:18:warning:[email protected]。。。命令行
was:/Library/Java/Home/bin/[email protected]@packages

请参阅中生成的Javadoc文件
“/Users/sergioc/Documents/Workspace/heal/minitoolbox/target/apidocs”
迪尔


org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeJavadocCommandLine(AbstractJavadocMojo.java:5043)

org.apache.maven.plugin.javadoc.AbstractJavadocMojo.ExecutePort(AbstractJavadocMojo.java:1990)

org.apache.maven.plugin.javadoc.JavadocJar.execute(JavadocJar.java:181)

org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)

org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)

org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)

org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)

org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)

org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)

org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)

org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)上
org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)位于
org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)位于
org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)位于
org.apache.maven.cli.MavenCli.main(MavenCli.java:141)位于
sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)位于
invoke(NativeMethodAccessorImpl.java:57)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
位于java.lang.reflect.Method.invoke(Method.java:491)
org.codehaus.plexus.classworlds.launcher.launcher.launchEnhanced(launcher.java:290)

org.codehaus.plexus.classworlds.launcher.launcher.launch(launcher.java:230)

org.codehaus.plexus.classworlds.launcher.launcher.mainWithExitCode(launcher.java:409)

org.codehaus.plexus.classworlds.launcher.launcher.main(launcher.java:352)

关于如何在使用Java7时一步构建源代码、安装项目和生成JavaDocJAR,有什么解决方法吗

最好的解决方案是修复javadoc错误。如果由于某种原因而无法执行(即:自动生成的源代码),则可以禁用此检查

DocLint是Java 8中的一项新功能,总结如下:

提供一种方法来检测Java文档注释中的早期错误
开发周期,并以一种易于与
源代码

这在默认情况下是启用的,并将在生成Javadoc之前运行大量检查。您需要按照指定的方式为Java 8关闭此选项http://mail.openjdk.java.net/pipermail/build-infra-dev/2013-January/002899.html“rel=”noreferrer“>在此线程中。您必须将此添加到maven配置中:

<简介>
<简介>
<id>java8 doclint已禁用&lt/id>
<激活>
<jdk>[1.8,)</jdk>
</activation>
<属性>
<javadoc.opts>-Xdoclint:none</javadoc.opts>
</properties>
</profile>
</profiles>
<构建>
<插件>
<插件>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven javadoc插件</artifactId>
<版本>2.9</version>
<执行>
<执行>
<id>附加javadocs</id>
<目标>
<goal>jar</goal>
</goals>
<配置>
<additionalparam>${javadoc.opts}</additionalparam>
</configuration>
</execution>
</executions>
</plugin>
<插件>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven站点插件</artifactId>
<版本>3.3</version>
<配置>
<报告插件>
<插件>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven javadoc插件</artifactId>
<配置>
<additionalparam>${javadoc.opts}</additionalparam>
</configuration>
</plugin>
</reportPlugins>
</configuration>
</plugin>
</plugins>
</build>

对于maven javadoc插件3.0.0+:
替换

<additionalparam>-Xdoclint:none</additionalparam>

<doclint>无</doclint>

发表评论