Не удалось создать поколение Javadoc: ClassCastException: com.sun.tools.javadoc.ClassDocImpl не может быть добавлено в com.sun.javadoc.AnnotationTypeDoc

Я получаю следующую ошибку, когда я делаю

mvn clean deploy -DperformRelease=true

[ОШИБКА] Код выхода: 1 -.java: 3: пакет javax.inject не есть
[ERROR] import javax.inject.Named;
[ERROR] ^
[ERROR] TransactionServiceExternalImpl.java:5: невозможно найти символ
Символ [ERROR]: класс Named - [ERROR] @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. и это является причиной проблемы.

Я вижу это предупреждение...

[ПРЕДУПРЕЖДЕНИЕ] 'build.plugins.plugin.version' для org.apache.maven.plugins: отсутствует maven-javadoc-plugin. [WARNING] 'build.plugins.plugin.version' для org.apache.maven.plugins: отсутствует maven-deploy-plugin.

Установив следующее в моем пом...

<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


На стороне примечания: вы можете клонировать репо SVN для версии 2.9.1, обновить pom до 2.10.1, выполнить mvn install, чтобы поместить его в вашу папку M2. Вы должны снова работать и работать, вам просто нужно удалить эту версию tmp, когда выйдет реальный релиз.

Ответ 1

У нас были такие же проблемы в наших проектах. Theres много людей, имеющих эту проблему, поэтому должна быть проблема с maven-javadoc-plugin, поскольку maven-javadoc-plugin прерывает выпуск mvn: выполнить, указанный в первом ответе. Проблема с jira - http://jira.codehaus.org/browse/MJAVADOC-408.

Временные решения:

  • Выполнить сборку с опцией -Dmaven.javadoc.skip=true
  • Добавьте это свойство в pom.xml <maven.javadoc.failOnError>false</maven.javadoc.failOnError>
  • Исправьте версию maven-javadoc-plugin до 2.9.1 в вашем разделе pluginManagement, например
<pluginManagement>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>2.9.1</version>
    </plugin>
  </plugins>
</pluginManagement>

Я надеюсь, что проблема скоро будет решена.

Обновление Согласно Noremac в комментариях, если вы используете плагин release и хотите передать ему аргументы, правильный способ сделать это - Darguments = "- Dmaven.javadoc.skip = true".

В противном случае я буду придерживаться другого пути, потому что это происходит в любой сборке maven, использующей javadoc.

Обновление 2 Также TheConstructor в комментариях говорит, что проблема 2.10.1 устраняет проблему. Я не могу проверить это.

Ответ 2

У нас та же проблема, и мы временно решили эту проблему, явно указав версию Maven Javadoc Plugin на 2.9.1

Ответ 3

Из jira http://jira.codehaus.org/browse/MJAVADOC-407:

классы сборки (включая зависимости сторонних сторон) не относятся к javadoc classpath больше

Но если добавить addecies в 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>
...

это не поможет.

Ответ 4

Это несколько сработало для меня, мне пришлось добавить плагин таким образом, так как у нас уже были другие плагины, установленные для сборки. Примечание. Я удалил другие плагины из приведенного ниже примера:

<build>     
    <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>2.9.1</version>
        </plugin>
    </plugins>
</build>

Ответ 5

добавьте это в родительский pom:

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

решить проблему

Ответ 6

Используйте следующий плагин для создания 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>