2014-09-22 8 views
11

ich die folgende Fehlermeldung erhalten, wenn ichJavadoc Generation fehlgeschlagen: Classcast: com.sun.tools.javadoc.ClassDocImpl nicht com.sun.javadoc.AnnotationTypeDoc gegossen werden kann

mvn clean deploy -DperformRelease=true 

[ERROR ] Exit-Code: 1 - .java: 3: Paket javax.inject ist nicht vorhanden
[ERROR] import javax.inject.Named;
[ERROR]^
[ERROR] TransactionServiceExternalImpl.java:5: nicht Symbol
[ERROR] Symbol gekennzeichnet ist: Klasse mit dem Namen
[ERROR] @Named ("transactionServiceExternal")
[ERROR]^
[ERROR] java.lang.ClassCastException: com.sun.tools.javadoc.ClassDocImpl kann nicht auf com.sun.javadoc.AnnotationTypeDoc

Die POM ist diese gegossen werden ...

<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> 

Es gibt nur eine Klasse ...

import javax.inject.Named; 

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

Ich erhalte den Fehler mit

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

Aber nicht mit. ..

  • jdk1.7.0_05

Wer irgendwelche Ideen?

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


Ich weiß jetzt, dass der Grund ist, dass das Plugin Maven Javadoc von 2,9 geändert hat .1 bis 2.10. und das ist die Ursache des Problems.

ich diese Warnung sehen ...

[WARNUNG] 'build.plugins.plugin.version' für org.apache.maven.plugins: Maven-Javadoc-Plugin fehlt. [WARNUNG] 'build.plugins.plugin.version' für org.apache.maven.plugins: maven-deploy-plugin fehlt.

Durch die Einstellung des folgend in meinem 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> 

ich die Version zurück zur letzten Version beheben kann.

Ich werde einen Fehler mit den Maven Javadoc Schöpfern auslösen.


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


Auf einer seitlichen Anmerkung: Sie können die SVN-Repo für die Version 2.9.1, klonen die pom zu 2.10.1 aktualisieren, führen Sie eine mvn installieren Sie es in Ihnen M2 setzen Mappe. Sie sollten wieder auf und arbeiten, Sie müssen nur diese tmp-Version entfernen, wenn die echte Veröffentlichung herauskommt.

Antwort

13

hatten die gleichen Probleme in unseren Projekten. Theres eine Menge Leute, die dieses Problem haben, also sollte ein Problem hinsichtlich maven-javadoc-plugins als maven-javadoc-plugin breaks mvn release:perform sein, das in der ersten Antwort festgestellt wird. Die Jira-Ausgabe lautet http://jira.codehaus.org/browse/MJAVADOC-408.

Temporal Lösungen:

  • Execute bauen mit -Dmaven.javadoc.skip=true Option
  • diese Eigenschaft hinzufügen in pom.xml <maven.javadoc.failOnError>false</maven.javadoc.failOnError>
  • Fix Maven-Javadoc-Plugin Version 2.9.1 in Ihrem pluginManagement Abschnitt wie
<pluginManagement> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-javadoc-plugin</artifactId> 
     <version>2.9.1</version> 
    </plugin> 
    </plugins> 
</pluginManagement> 

Ich hoffe, das Problem wird bald behoben.

aktualisieren Nach Noremac in den Kommentaren, wenn Sie mit Release-Plugin und wollen Argumente zu übergeben, der richtige Weg, es zu tun ist -Darguments = „- Dmaven.javadoc.skip = true“ .

Ich behalte den anderen Weg in meiner Antwort, weil dies in jedem Maven Build geschieht, der javadoc verwendet.

Update 2 Auch TheConstructor in Kommentaren sagt, dass 2.10.1 Version das Problem zu beheben. Ich bin nicht in der Lage, es auszuprobieren.

+0

Dies ist eine gute Zusammenfassung der Optionen ab 2014-09-23. Die einzige Sache, die ich hinzufügen könnte, ist zu beobachten/zu überwachen und vote up http://jira.codehaus.org/browse/MJAVADOC-408 .. oder senden Sie einen Patch :) –

+3

Es ist bemerkenswert, dass '-Dmaven.javadoc.skip = true' hilft nicht, wenn Sie 'mvn release: perform' ausführen. –

+2

@ MarcelStör das ist falsch. Nach der typischen Verwendung des Release-Plugins müssen Sie Argumente über etwas wie -Darguments = "- Dmaven.javadoc.skip = true" übergeben. Dies haben wir hier gemacht, um das Problem unserer Releases zu umgehen. http://maven.apache.org/maven-release/maven-release-plugin/perform-mojo.html – Noremac

1

Von jira http://jira.codehaus.org/browse/MJAVADOC-407:

build Klassen (einschließlich Abhängigkeiten 3rd-Parteien) sind nicht auf javadoc Classpath mehr

Aber wenn ich dependecies hinzufügen 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> 
... 

das nicht helfen.

2

Wir haben das gleiche Problem, und wir gelöst vorübergehend dieses Problem, indem explizit angeben Maven Javadoc Plugin Version 2.9.1

0

diese pom Mutter hinzufügen:

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

lösen Problem Diese

1

etwas funktionierte für mich, ich musste das Plugin auf diese Weise hinzufügen, da wir bereits andere Plugins für Builds hatten.Hinweis Ich habe unsere anderen Plugins aus dem folgenden Beispiel entfernt:

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

Verwenden Sie das folgende Plug-in, um Java-Dokumente zu generieren.

<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>