2017-09-23 3 views
3

Ich habe ein Maven-Projekt mit maven-javadoc-plugin und JDK8. Wenn ich mvn javadoc:test-javadoc starte, dann meldet das Plugin Dokumentationsfehler und stoppt, aber wenn ich mvn javadoc:test-javadoc-no-fork starte, läuft das Plugin erfolgreich und es gibt nur einige Warnungen.Was bewirkt, dass maven-javadoc-plugin goal test-javadoc bei Fehlern fehlschlägt, aber test-javadoc-no-fork nur Warnungen hat

Die Frage ist NICHT, wie zu beheben oder die Dokumentation-Fehler. Das Plugin entdeckte echte Dokumentationsprobleme, die behoben werden müssen, so dass die gemeldeten Fehler von mvn javadoc:test-javadoc das richtige Ergebnis sind.

Die Frage ist: Warum schlägt mvn javadoc:test-javadoc-no-fork nicht fehl, aber behandeln die Probleme nur als Warnung?


Hintergrund:

  • Das Projekt ist ein Multi-Modul-Projekt
  • Maven Version: 3.3.9
  • Maven-Javadoc-Plugin: 2.9.4 (das gleiche Verhalten tritt für 3.0.0-M1)
  • Java8

Das protzte Problem in TracingServiceSpringTest hat wirklich eine fehlende Dokumentation für das geworfen DatatypeConfigurationException

/** scenario: some text... **/ 
@Test 
public void testImport() throws DatatypeConfigurationException {... 

Ausgabe bei mvn javadoc:test-javadoc

[INFO] 
[INFO] <<< maven-javadoc-plugin:2.10.4:test-javadoc (default-cli) < generate-test-sources @ agrovet-server <<< 
[INFO] 
[INFO] --- maven-javadoc-plugin:2.10.4:test-javadoc (default-cli) @ agrovet-server --- 
[INFO] 
... 
3 errors 
9 warnings 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Summary: 
[INFO] 
[INFO] PROJECT ............................................ SUCCESS [ 1.131 s] 
[INFO] PROJECT :: Client .................................. SUCCESS [ 43.908 s] 
[INFO] PROJECT :: Server .................................. FAILURE [ 44.774 s] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 01:36 min 
[INFO] Finished at: 2017-09-23T21:33:33+02:00 
[INFO] Final Memory: 96M/1573M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.10.4:test-javadoc (default-cli) on project PROJECT-server: An error has occurred in Test JavaDocs report generation: 
[ERROR] Exit code: 1 - F:\workspaces\PROJECT\PROJECT-server\src\test\java\com\example\PROJECT\infrastructure\TracingServiceSpringTest.java:389: warning: 
no @throws for javax.xml.datatype.DatatypeConfigurationException 
[ERROR] public void testImport() throws DatatypeConfigurationException { 
[ERROR]^
... 
[ERROR] 
[ERROR] Command line was: "C:\Program Files\Java\jdk1.8.0_121\jre\..\bin\javadoc.exe" @options @packages 
[ERROR] 
[ERROR] Refer to the generated Javadoc files in 'F:\workspaces\PROJECT\PROJECT-server\target\site\testapidocs' dir. 
[ERROR] -> [Help 1] 
[ERROR] 

... 

Ausgang läuft, wenn mvn javadoc:test-javadoc-no-fork

0 läuft
8 warnings 
[WARNING] Javadoc Warnings 
[WARNING] F:\workspaces\PROJECT\PROJECT-server\src\test\java\com\example\PROJECT\infrastructure\TracingServiceSpringTest:389: warning: no @throws for javax.xml.datatype.DatatypeConfigurationException 
[WARNING] public void testImport() throws DatatypeConfigurationException { 
[WARNING]^
... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Summary: 
[INFO] 
[INFO] PROJECT ............................................ SUCCESS [ 0.454 s] 
[INFO] PROJECT :: Client .................................. SUCCESS [ 0.011 s] 
[INFO] PROJECT :: Server .................................. SUCCESS [ 6.763 [INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
... 

Relevante POM-Teile, Eltern pom.xml (die vollständige pom ist einfach zu groß, aber das ist der einzige Teil, der die maven-javadoc-plugin erwähnt:

<dependencyManagement> 
    <dependencies> 
     ... 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.10.4</version> 
     </plugin> 
    </dependencies> 
</dependencyManagement> 
... 
<reporting> 
    <plugins> 
     ... 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <reportSets> 
       <reportSet> 
        <reports> 
         <!-- 
         javadoc-no-fork in order to prevent JavaDoc process from runing generate-source again 
         but this also requries that JavaDoc generation runs after compile: "mvn install site" 
         but not on a black project "mvn clean site" 
         --> 
         <report>javadoc-no-fork</report> 
         <report>test-javadoc-no-fork</report> 
        </reports> 
       </reportSet> 
      </reportSets> 
     </plugin> 
    </plugins> 
</reporting> 

Antwort

0

Bei dem Versuch, zu Generate Javadoc without duplicate execution of phase generate-sources. Ab Version 2.10 werden zwei neue Berichte definiert, javadoc-no-fork und test-javadoc-no-fork werden die Phasen generate-sources oder generate-test-sources nicht erneut ein zweites Mal auslösen.

Wenn Sie die Option test-javadoc-no-fork verwenden, wird die Generierung der Testquelle übersprungen und Ihr Build ist somit erfolgreich.

... generiert die Javadoc-Testdateien für das Projekt . Es führt das Javadoc-Standardwerkzeug aus und unterstützt die Parameter, die vom Werkzeug verwendet werden, ohne die generate-test-sources Phase erneut zu verwerfen. Beachten Sie, dass dieses Ziel die Generierung von Test- -Quellen vor der Site-Generierung, z. durch Aufruf von mvn clean deploy site.

auf der anderen Seite javadoc:test-javadoc die Test-Quellen werden erneut kompiliert und der Fehler wird protokolliert.

generiert die Test-Javadoc-Dateien für das Projekt. Es führt das Standard-Javadoc-Werkzeug aus und unterstützt die vom Werkzeug verwendeten Parameter.


All das mit den <reportSets>

Mehrere Spezifikationen einer Reihe von Berichten, von denen jede (möglicherweise) unterschiedliche Konfiguration. Dies ist die Berichterstattung parallel zu einem <execution> im Build.

beiden Typen no-fork, können Sie versuchen, und umfassen test-javadoc als einer der Berichte in den <reportSet> dies zu lösen.

+0

Aber diese Probleme sind keine Compiler-Probleme. Die Probleme sind nur, dass das Javadoc für eine geworfene Ausnahme fehlt. - Und das javadoc-Tool ist sogar, wenn "test-javadoc-no-fork" ausgeführt wird, das dieses Problem erkennt (es erzeugt eine Warnung), aber es stoppt den Build nicht. – Ralph

+0

@Ralpha Wahrscheinlich habe ich dich anfangs falsch verstanden. Ich versuchte, das gleiche mit jeweils einer Klasse in meinem Test und Main zu reproduzieren, konnte jedoch nicht den Fehler für beide Befehle bekommen. Sie können auch test-javadoc als einen der Berichte verwenden und sehen, ob das hilft. – nullpointer

Verwandte Themen