Depuis que j'utilise Maven, j'ai pu créer et installer dans mes projets de référentiel local des balises Javadoc incomplètes (par exemple, un paramètre manquant).
Cependant, depuis que j'ai migré vers Java 8 (1.8.0-ea-b90) Maven est absolument strict sur les balises de documentation manquantes et me montre beaucoup d'erreurs Javadoc liées aux problèmes Javadoc lorsque j'essaie de construire ou d'installer un projet où le Javadoc n'est pas "parfait". Certains des projets que j'essaye de compiler et d'installer dans mon référentiel local sont des projets tiers dont je n'ai pas le contrôle. Ainsi, la solution de contournement consistant à simplement réparer tous les Javadocs dans tous ces projets ne semble pas réalisable dans mon scénario.
Ceci est une petite partie de la sortie que je vois lorsque j'exécute mvn clean package install
dans mon projet:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.026s
[INFO] Finished at: Mon Apr 08 21:06:17 CEST 2013
[INFO] Final Memory: 27M/437M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9:jar (attach-javadocs) on project jpc: MavenReportException: Error while creating archive:
[ERROR] Exit code: 1 - /Users/sergioc/Documents/workspaces/heal/jpc/src/main/java/org/jpc/engine/prolog/PrologDatabase.java:10: error: @param name not found
[ERROR] * @param terms the terms to assert
[ERROR] ^
[ERROR] /Users/sergioc/Documents/workspaces/heal/jpc/src/main/java/org/jpc/engine/prolog/PrologDatabase.java:11: warning: no description for @return
[ERROR] * @return
[ERROR] ^
Le plugin Javadoc Maven est configuré comme ceci dans mon POM:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
Comme je l'ai déjà dit, tout fonctionne bien si je reviens à Java 7. Peut-être est-ce un bug lié à Maven fonctionnant en Java 8? Comment pourrais-je le faire fonctionner (c'est-à-dire pouvoir construire le Javadoc du projet et installer son code dans mon dépôt local) avec Java 8? J'ai testé avec Maven 3.0.3 et 3.0.5 sous OSX.
METTRE À JOUR:
Si je change ma configuration de plugin Javadoc avec <failOnError>false</failOnError>
(merci Martin):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.9</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
Ensuite, le projet est installé dans mon référentiel local. Cependant, le JAR Javadoc n'est toujours pas généré.
Un fragment de la sortie que je vois dans la console avec cette nouvelle configuration est:
[ERREUR] MavenReportException: erreur lors de la création de l'archive: code de sortie: 1 - /Users/....java:18: avertissement: pas de @param ... La ligne de commande était: / Library / Java / Home / bin / javadoc @options @paquets
Reportez-vous aux fichiers Javadoc générés dans le répertoire '/ Users / sergioc / Documents / workspaces / heal / minitoolbox / target / apidocs'.
à org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeJavadocCommandLine (AbstractJavadocMojo.java:5043) à org.apache.maven.plugin.javadoc.AbstractJavadocMojo.executeReport (AbstractJavadocMojo.executeReport (RésuméJavadocMojo.executeReport) .javadoc.JavadocJar.execute (JavadocJar.java:181) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor : 209) sur org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:153) sur org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:145) sur org.apache. maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:84) sur org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:59) à org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild (LifecycleStarter.java:183) à org.apache.maven.lifecycle.internal.LifecycleStarter.execute (Ljecycle). à org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:320) à org.apache.maven.DefaultMaven.execute (DefaultMaven.java:156) à org.apache.maven.cli.MavenCli.execute (MavenCli.java : 537) à org.apache.maven.cli.MavenCli.doMain (MavenCli.java:196) à org.apache.maven.cli.MavenCli.main (MavenCli.java:141) à sun.reflect.NativeMethodAccessorImpl.invoke0 ( Native Method) sur sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) sur sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) sur java.lang.reflect.Method.invoquer (Method.java:491) sur org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:290) sur org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:230) à org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:409) à org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:352)
Une solution de contournement sur la façon de générer les sources, d'installer le projet et de générer le JAR Javadoc en une seule étape alors qu'il fonctionnait avec Java 7?