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