11

当我这样做时,我收到以下错误

mvn clean deploy -DperformRelease=true

[错误] 退出代码:1 - .java:3:包 javax.inject 不存在
[错误] 导入 javax.inject.Named;
[错误] ^
[错误] TransactionServiceExternalImpl.java:5: 找不到符号
[错误] 符号: 类命名
[错误] @Named("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>

只有一门课...

import javax.inject.Named;

@Named("transactionServiceExternal")
public class TransactionServiceExternalImpl 
{
}

我得到了错误

  • jdk1.5.0_22
  • jdk1.6.0_29
  • jdk1.6.0_43
  • jdk1.6.0_43_32bit

但不是...

  • jdk1.7.0_05

有人有想法么?

注释:Apache Maven 3.0.4 (r1232337; 2012-01-17 08:44:56+0000)


我现在知道原因是 Maven Javadoc 插件已从 2.9.1 更改为 2.10。这就是问题的原因。

我可以看到这个警告...

[警告] org.apache.maven.plugins:maven-javadoc-plugin 的“build.plugins.plugin.version”缺失。[警告] org.apache.maven.plugins:maven-deploy-plugin 的“build.plugins.plugin.version”缺失。

通过在我的 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 存储库,将 pom 更新到 2.10.1,执行 mvn install 将其放入 M2 文件夹中。你应该重新开始工作了,你只需要在真正的版本出来时删除这个 tmp 版本。

4

6 回答 6

13

在我们的项目中遇到了同样的问题。有很多人有这个问题,所以应该是关于 maven-javadoc-plugin 的问题,因为maven-javadoc-plugin 破坏了 mvn release:perform在第一个答案中说明。jira 问题是http://jira.codehaus.org/browse/MJAVADOC-408

临时解决方案:

  • -Dmaven.javadoc.skip=true使用选项执行构建
  • 在 pom.xml 中添加此属性<maven.javadoc.failOnError>false</maven.javadoc.failOnError>
  • 在您的 pluginManagement 部分中将 maven-javadoc-plugin 版本修复为 2.9.1,例如
<pluginManagement>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>2.9.1</version>
    </plugin>
  </plugins>
</pluginManagement>

我希望问题很快得到解决。

更新 根据 Noremac 在评论中的说法,如果您正在使用发布插件并希望将参数传递给它,那么正确的方法是 -Darguments="-Dmaven.javadoc.skip=true"。

我会在我的回答中保留另一种方式,因为这发生在任何使用 javadoc 的 Maven 构建中。

更新 2 评论中的 TheConstructor 也说 2.10.1 版本解决了这个问题。我无法检查出来。

于 2014-09-23T14:25:17.420 回答
2

我们有同样的问题,我们通过将 Maven Javadoc 插件版本明确指定为 2.9.1 暂时解决了这个问题

于 2014-09-24T02:50:04.823 回答
1

这对我有点用,我不得不以这种方式添加插件,因为我们已经为构建设置了其他插件。注意我从下面的示例中删除了我们的其他插件:

<build>     
    <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>2.9.1</version>
        </plugin>
    </plugins>
</build>
于 2014-09-29T16:10:12.773 回答
1

来自 jira http://jira.codehaus.org/browse/MJAVADOC-407

构建类(包括第 3 方依赖项)不再位于 javadoc 类路径中

但是,如果我向 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>
...

这无济于事。

于 2014-09-23T08:44:07.223 回答
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>
于 2014-11-21T14:34:56.220 回答
0

将此添加到父pom:

<build>
...
<pluginManagement>
  <plugins>
    <plugin>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>2.9.1</version>
    </plugin>
  </plugins>
</pluginManagement>
...
<build>

解决问题

于 2014-09-26T08:55:37.070 回答