2017-09-23 1 views
3

J'ai un projet Maven avec maven-javadoc-plugin et JDK8. Quand je cours mvn javadoc:test-javadoc alors le plugin signale la documentation-les erreurs et les arrêts, mais quand je cours mvn javadoc:test-javadoc-no-fork le plugin fonctionne avec succès et il y a juste quelques avertissements. La question est pas comment résoudre ou les erreurs de documentation. Le plugin a détecté de vrais problèmes de documentation, qui doivent être corrigés, donc les erreurs rapportées de mvn javadoc:test-javadoc sont le résultat correct.Qu'est-ce qui fait que maven-javadoc-plugin goal test-javadoc échoue en cas d'erreur mais test-javadoc-no-fork juste pour avoir des avertissements

La question est: Pourquoi ne pas mvn javadoc:test-javadoc-no-fork échouer mais gérer les problèmes tout comme avertissement?


Contexte:

  • le projet est un multi-module-projet
  • Version Maven: 3.3.9
  • maven-javadoc-plugin: 2.9.4 (le même comportement se produit pour 3.0.0-M1)
  • Java8

Le problème arborait dans TracingServiceSpringTest a vraiment une documentation manquante pour la jetée DatatypeConfigurationException

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

Sortie lors de l'exécution 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] 

... 

Sortie lors de l'exécution 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] ------------------------------------------------------------------------ 
... 

Parties pertinentes POM, parent pom.xml (la pom complète est tout simplement trop énorme, mais cela est la seule partie qui mentionne le maven-javadoc-plugin:

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

Répondre

0

Tout en essayant de Generate Javadoc without duplicate execution of phase generate-sources. À partir de la version 2.10, deux nouveaux rapports sont définis, javadoc-no-fork et test-javadoc-no-fork ne déclencheront pas les phases generate-sources ou generate-test-sources une deuxième fois. Lorsque vous utilisez l'option test-javadoc-no-fork, la génération de source de test est ignorée et votre build réussit. ... génère les fichiers Javadoc de test pour le projet . Il exécute l'outil Javadoc standard et prend en charge les paramètres utilisés par l'outil sans renoncer à nouveau à la phase generate-test-sources . Notez que cet objectif nécessite la génération de sources de test avant la génération du site, par ex. en invoquant mvn clean deploy site.D'autre part, les sources de test sont compilées à nouveau et l'erreur est consignée.

génère les fichiers Javadoc de test pour le projet. Il exécute l'outil Javadoc standard et prend en charge les paramètres utilisés par l'outil.


Tout cela avec les <reportSets>

spécifications multiples d'un ensemble de rapports, chacun ayant (éventuellement) configuration différente. Ceci est le rapport parallèle à un <execution> dans la construction.

deux de type no-fork, vous pouvez essayer d'inclure test-javadoc comme l'un des rapports du <reportSet> pour résoudre ce problème.

+0

Mais ces problèmes ne sont pas des problèmes de compilateur. Les problèmes sont simplement que le javadoc pour une exception levée est manquant. - Et l'outil javadoc est même lors de l'exécution de 'test-javadoc-no-fork' reconnaissant ce problème (il génère un avertissement) mais n'arrête pas la construction. – Ralph

+0

@Ralph Ya probablement je me suis trompé initialement. Essayer de reproduire le même avec une classe chacun dans mon test et principal, je ne pouvais pas obtenir l'échec pour les deux commandes cependant. Vous pouvez également essayer d'inclure 'test-javadoc' dans l'un des rapports et voir si cela peut vous aider. – nullpointer