当我这样做时,我收到以下错误
mvn clean deploy -DperformRelease=true
[ERROR]退出代码:1 - .java:3:包javax.inject没有 存在
[ERROR] import javax.inject.Named;
[ERROR] ^
[ERROR] TransactionServiceExternalImpl.java:5:找不到符号
[错误]符号:类命名为[错误] @Named(“transactionServiceExternal”)
[ERROR] ^
[ERROR] 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>
只有一个班级......
import javax.inject.Named;
@Named("transactionServiceExternal")
public class TransactionServiceExternalImpl
{
}
我收到
的错误但不是......
有人有什么想法吗?
备注:Apache Maven 3.0.4(r1232337; 2012-01-17 08:44:56 + 0000)
我现在知道原因是Maven Javadoc插件已经从2.9.1变为2.10。 这就是问题的原因。
我可以看到这个警告......
[警告] org.apache.maven.plugins的'build.plugins.plugin.version':缺少maven-javadoc-plugin。 [警告] org.apache.maven.plugins的'build.plugins.plugin.version':缺少maven-deploy-plugin。
在我的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>
我可以将版本修复回上一版本。
我将向Maven Javadoc创建者提出一个错误。
http://jira.codehaus.org/browse/MJAVADOC-407
旁注:您可以克隆版本2.9.1的SVN repo,将pom更新为2.10.1,执行mvn安装将其放入M2文件夹中。你应该重新开始工作,只需要在真正版本发布时删除这个tmp版本。
答案 0 :(得分:13)
我们的项目遇到同样的问题。很多人都有这个问题所以应该是关于maven-javadoc-plugin的问题,如maven-javadoc-plugin breaks mvn release:perform在第一个答案中所述。 jira问题是http://jira.codehaus.org/browse/MJAVADOC-408。
时间解决方案:
-Dmaven.javadoc.skip=true
选项<maven.javadoc.failOnError>false</maven.javadoc.failOnError>
<pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9.1</version> </plugin> </plugins> </pluginManagement>
我希望问题很快得到解决。
<强>更新强> 根据Noremac的评论,如果您正在使用发布插件并希望将参数传递给它,正确的方法是-Darguments =&#34; -Dmaven.javadoc.skip = true&# 34 ;.
在我的回答中保持另一种方式,因为这发生在使用javadoc的任何maven构建中。
更新2 另外,评论中的TheConstructor说2.10.1版本修复了这个问题。我无法检查出来。
答案 1 :(得分:2)
我们遇到同样的问题,我们通过明确指定Maven Javadoc Plugin版本到2.9.1暂时解决了这个问题
答案 2 :(得分:1)
来自jira http://jira.codehaus.org/browse/MJAVADOC-407:
构建类(包括第三方依赖项)不在javadoc上 classpath再来一次
但是如果我将依赖添加到maven-javadoc-plugin:
...
<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>
...
这没有帮助。
答案 3 :(得分:1)
这对我有用,我必须以这种方式添加插件,因为我们已经为构建设置了其他插件。注意我从以下示例中删除了我们的其他插件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
</plugin>
</plugins>
</build>
答案 4 :(得分:0)
将此添加到父pom:
<build>
...
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9.1</version>
</plugin>
</plugins>
</pluginManagement>
...
<build>
解决问题
答案 5 :(得分:0)
使用以下插件生成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>