Не удалось создать поколение 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
Но НЕ с...
У кого-нибудь есть идеи?
Примечания: 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>