web-dev-qa-db-fra.com

maven-javadoc-plugin interrompt la publication de mvn: effectuer

J'essaie d'exécuter mvn release:perform sur trois projets que j'ai publiés sur notre serveur Nexus plusieurs fois fois dans le passé. Soudain aujourd'hui, sans raison apparente, toutes les versions n'atteignent pas l'objectif org.Apache.maven.plugins:maven-javadoc-plugin:2.10:jar (attach-javadocs).

Lorsque le traçage complet de la pile et la journalisation du débogage sont activés (-e et -X), plusieurs centaines de lignes d’erreurs concernant des packages manquants apparaissent:

...    
package org.Apache.http does not exist
package org.slf4j does not exist
package org.joda.time does not exist
...

Cependant, tous ces packages se trouvent à la fois dans mon référentiel local et sur le serveur Nexus. De plus, je ne reçois aucune de ces erreurs de mvn clean install, et tous les projets (applications Web Java) sont lancés à partir d'Intellij sans problème - il est donc clair que je ne manque pas en fait de centaines de paquets.

Qu'est-ce qui pourrait empêcher mvn release:perform de trouver ces paquets quand mvn clean install et mvn release:prepare ne rencontrent aucun problème?

31
Rob Johansen

Il semble y avoir une cascade de problèmes concernant la mise à jour vers maven-javadoc-plugin. Voir https://issues.Apache.org/jira/browse/MJAVADOC-408 .

Je peux voir un avantage à avoir mvn utiliser les dernières versions de plugins "intégrés" sauf indication contraire (par opposition à une "version bloquée" pour une version Maven donnée), mais cela signifie que les responsables de plug-ins sont obligés de faire la régression tester contre chaque version de Maven lors de la publication d'un plugin. Peut-être que quelque chose a été manqué.

Une solution de contournement consisterait à spécifier explicitement la version précédente de maven-javadoc-plugin dans le super POM de votre organisation ou le POM du projet s'il n'est pas possible de changer le super POM rapidement: 

<pluginManagement>
  <plugins>
    <plugin>
      <groupId>org.Apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>2.9.1</version>
    </plugin>
  </plugins>
</pluginManagement>

Notre plate-forme CI (Jenkins) a rencontré le même problème aujourd'hui. Espérons qu'un nouveau maven-javadoc-plugin sera poussé avec son arbre de dépendance mis à jour (si c'est effectivement le problème). FWIW, nous étions sur 3.0.5 (ya, triste pour une variété de raisons).

Mise à jour 2014-09-24

Tout ce brouhaha semble provenir de la réponse du responsable maven-javadoc-plugin à un problème/ qui reste à résoudre in Java-1.8.0-openjdk dans MJAVADOC-398 . Je ne sais pas pourquoi quelqu'un voudrait créer une solution de rechange pour résoudre un défaut de projet en aval non résolu.

Mise à jour 2014-10-02

MJAVADOC-406 a été résolu et une version 2.10.1 de maven-javadoc-plugin est disponible dans Maven Central et probablement dans de nombreux référentiels près de chez vous. 

Les versions avec la version de plug-in javadoc non épinglée devraient maintenant revenir à la normale. 

Morale de l'histoire

Maven-folk, vous avez été prévenu. Verrouillez vos dépendances de plug-in, car elles pourraient devenir malveillantes.

P.S., MJAVADOC-408 a été clôturé comme une copie de MJAVADOC-407 .

29
David J. Liszewski

Un autre moyen de résoudre ce problème consiste à ajouter la propriété suivante:

...
<properties>
<maven.javadoc.failOnError>false</maven.javadoc.failOnError>
...
</properties>

dans votre pom.xml

29
Frédéric Meunier

le package de version mvn utilise un profil spécial par défaut. Ce profil par défaut inclut certaines configurations de plug-in par défaut (telles que l'attachement automatique de javadocs dans le cadre de la construction). 

C'est la raison pour laquelle votre construction échoue uniquement sur mvn release:perform et non sur mvn clean install.

Si vous souhaitez mieux contrôler la configuration à utiliser (par exemple, si vous ne souhaitez pas utiliser de javadocs ou si vous souhaitez définir votre propre configuration pour les javadocs), vous pouvez essayer de désactiver ce profil par défaut en ajoutant le configuration: <useReleaseProfile>false</useReleaseProfile>

ou dans la ligne de commande: mvn release:perform -DuseReleaseProfile=false

Plus d'infos ici: http://maven.Apache.org/maven-release/maven-release-plugin/perform-mojo.html#useReleaseProfile

10
crandrad

Si la génération de javadocs n'est pas nécessaire, ajoutez simplement la propriété skip:

<properties>
    <maven.javadoc.skip>true</maven.javadoc.skip>
</properties>
4
magiccrafter

Je venais de faire échouer une compilation avec le plugin Javadoc 2.9.1.

Dans mon cas, c’est parce que je suis passé de Java 7 à 7, et que l’outil javadoc de 8 semble être plus strict avec ses contrôles. J'ai eu un {@link ...} cassé dans mon code que l'outil de 7 laissait passer.

4
user2800708

J'ai la version 2.8 et 

<maven.javadoc.failOnError>false</maven.javadoc.failOnError>

travaux

1
user1948559