Javadoc生成失败:ClassCastException:com.sun.tools.Javadoc.ClassDocImpl无法转换为com.sun.Javadoc.AnnotationTypeDoc
当我这样做时,我得到了以下错误Javadoc生成失败:ClassCastException:com.sun.tools.Javadoc.ClassDocImpl无法转换为com.sun.Javadoc.AnnotationTypeDoc,java,maven,javadoc,maven-javadoc-plugin,Java,Maven,Javadoc,Maven Javadoc Plugin,当我这样做时,我得到了以下错误 mvn clean deploy -DperformRelease=true [错误]退出代码:1-.java:3:package javax.inject不存在 exist[ERROR]导入javax.inject.Named[错误]^[错误] TransactionServiceExternalImpl.java:5:找不到符号 [错误]符号:名为的类[错误] @命名(“transactionServiceExternal”)[错误]^[错误] java.l
mvn clean deploy -DperformRelease=true
[错误]退出代码:1-.java:3:package javax.inject不存在
exist[ERROR]导入javax.inject.Named
[错误]^
[错误] TransactionServiceExternalImpl.java:5:找不到符号
[错误]符号:名为
的类[错误] @命名(“transactionServiceExternal”)
[错误]^
[错误] java.lang.ClassCastException:com.sun.tools.javadoc.ClassDocImpl 无法强制转换为com.sun.javadoc.AnnotationTypeDoc
POM是这样的
<groupId>com.xxx</groupId>
<artifactId>ts-impl/artifactId>
<version>2.4.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
</dependencies>
我得到了错误的答案
- jdk1.5.0_22
- jdk1.6.0_29
- jdk1.6.0_43
- jdk1.6.0_43_32位
- jdk1.7.0_05
我现在知道原因是Maven Javadoc插件已从2.9.1更改为2.10。 这就是问题的原因 我可以看到这个警告 [警告]“org.apache.maven.plugins:maven javadoc插件”的“build.plugins.plugin.version”丢失。 [警告]'build.plugins.plugin.version'for org.apache.maven.plugins:maven deploy插件丢失 通过在我的pom中设置以下内容
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
org.apache.maven.plugins
另请注意:您可以克隆版本2.9.1的SVN repo,将pom更新为2.10.1,进行mvn安装以将其放入M2文件夹中。你应该重新开始工作,当真正的版本发布时,你只需要删除这个tmp版本。来自jira:
构建类(包括第三方依赖项)不在javadoc上
类路径了吗
但如果我向maven javadoc插件添加依赖项:
...
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10</version>
<dependencies>
<dependency>
<groupId>org.apache.cayenne</groupId>
<artifactId>cayenne-server</artifactId>
<version>3.1B2</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
</build>
...
。。。
maven javadoc插件
2.10
org.apache.cayenne
cayenne服务器
3.1B2
...
这没有帮助。在我们的项目中也有同样的问题。有很多人都有这个问题,所以第一个答案中提到的maven javadoc插件应该是一个问题。jira的问题是
临时解决方案:
- 使用
-Dmaven.javadoc.skip=true
选项执行构建
- 将此属性添加到pom.xml
false
- 在插件管理部分将maven javadoc插件版本修改为2.9.1,如
org.apache.maven.plugins
maven javadoc插件
2.9.1
我希望这个问题很快得到解决
更新
根据Noremac在评论中的说法,如果您正在使用release插件并希望向其传递参数,正确的方法是-Darguments=“-Dmaven.javadoc.skip=true”
在我的回答中,我将保留另一种方式,因为这发生在任何使用javadoc的maven构建中
更新2
另外,在评论中的构建者说2.10.1版本解决了这个问题。我无法检查它。我们也有同样的问题,我们通过明确指定Maven Javadoc插件版本为2.9.1,暂时解决了这个问题。将此添加到父pom:
<build>
...
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
</plugin>
</plugins>
</pluginManagement>
...
<build>
...
maven javadoc插件
2.9.1
...
解决问题这对我来说有些奏效,我不得不这样添加插件,因为我们已经为构建设置了其他插件。注意:我从下面的示例中删除了其他插件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
maven javadoc插件
2.9.1
使用以下插件生成java文档
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
maven javadoc插件
附加javadocs
罐子
这是截至2014-09-23的选项的一个很好的总结。我唯一能补充的就是观看/监视并投票。。或者提交一个补丁:)值得注意的是,如果运行mvn release:perform
@MarcelStör,则-Dmaven.javadoc.skip=true
没有帮助。这是不正确的。按照发布插件的典型用法,您需要通过-Darguments=“-Dmaven.javadoc.skip=true”之类的方式将参数传递给它。这就是我们在这里所做的,以解决我们发布版本中的问题@诺雷马克,啊,唉,唉……那些分叉的执行……完全忘记了-Darguments
。谢谢。2.10.1可用,似乎可以解决此问题。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
</plugin>
</plugins>
</build>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>