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?
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).
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.
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.
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 .
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
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
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>
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.
J'ai la version 2.8 et
<maven.javadoc.failOnError>false</maven.javadoc.failOnError>
travaux