2014-09-22 2 views
11

Я получаю следующее сообщение об ошибке, когда япоколение 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] символ: класс Названный
[ERROR] @Named ("transactionServiceExternal")
[ERROR]^
[ERROR] java.lang.ClassCastException: com.sun.tools.javadoc.ClassDocImpl не может быть приведен к com.sun.javadoc.AnnotationTypeDoc

ПОМ это ...

<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-плагин отсутствует. [ПРЕДУПРЕЖДЕНИЕ] '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, обновление ПОМ в 2.10.1, сделать MVN установить, чтобы поместить его в вас M2 папка. Вы должны снова работать и работать, вам просто нужно удалить эту версию tmp, когда выйдет реальный релиз.

ответ

13

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

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

  • Execute строить с -Dmaven.javadoc.skip=true опцией
  • Добавить эту недвижимость в pom.xml <maven.javadoc.failOnError>false</maven.javadoc.failOnError>
  • Fix версия Maven-Javadoc-плагин 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> 

Я надеюсь, что проблема будет исправлена ​​в ближайшее время.

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

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

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

+0

Это хорошее резюме вариантов с 2014-09-23. Единственное, что я мог добавить, это смотреть/контролировать и проголосовать за http://jira.codehaus.org/browse/MJAVADOC-408 .. или отправить патч :) –

+3

Стоит отметить, что '-Dmaven.javadoc.skip = true' не поможет, если вы запустите 'mvn release: выполнить'. –

+2

@ MarcelStör это неверно. Следуя типичному использованию плагина выпуска, вам нужно передать в него аргументы с помощью чего-то вроде -Darguments = "- Dmaven.javadoc.skip = true". Это то, что мы сделали здесь, чтобы обойти проблему в наших выпусках. http://maven.apache.org/maven-release/maven-release-plugin/perform-mojo.html – Noremac

1

С JIRA http://jira.codehaus.org/browse/MJAVADOC-407:

сборки классов (в том числе 3-го сторон зависимостей) не на Javadoc классам больше

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

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

2

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

0

добавить это к родительскому ПОМ:

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

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

1

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

<build>  
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.9.1</version> 
     </plugin> 
    </plugins> 
</build> 
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> 
Смежные вопросы