Pourquoi mvn release: prepare échoue-t-il lors du balisage?
Question
Avec mon pom multiprojet, je reçois une erreur lors de l'exécution de la version: prepare. La configuration du projet n'a rien d'extraordinaire et chaque étape de publication avant se déroule correctement. L'erreur que je reçois est la suivante:
[INFO] ------------------------------------------------------------------------ [ERROR] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Unable to tag SCM Provider message: The svn tag command failed. Command output: svn: Commit failed (details follow): svn: File '/repos/june/tags/foo-1.0.2/foo.bar.org/pom.xml' already exists
Avez-vous une idée de sa provenance et de la manière de la contourner?
(désolé pour le post en double. Le premier a été fermé car je ne l’ai pas formulé comme une question à laquelle on peut répondre. J'espère que ça va maintenant.)
MODIFIER
Le plugin maven release s’occupe de la gestion de la version elle-même. Ainsi, lorsque je vérifie le chemin dans le référentiel Subversion, il n’existe pas encore.
EDIT 2
@Ben: Je ne connais pas la version du serveur, mais le client est également 1.5.2.
La solution
Ce problème est traité dans la dernière version du maven-release-plugin . Ajoutez ceci à votre POM pour l'insérer.
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.0-beta-9</version>
</plugin>
</plugins>
</pluginManagement>
</build>
Le problème qui a été résolu est MRELEASE-375 .
Autres conseils
C'est parce que vous n'avez pas augmenté le numéro de version - 1.0.2 existe déjà dans votre référentiel Subversion.
Augmentez votre version ou supprimez simplement la balise /repos/june/tags/foo-1.0.2 de votre référentiel.
Roland, si vous ne l'avez pas déjà vu, jetez un coup d'œil au billet de blog de John Smart sur ce problème. Bien que le scénario qu'il propose soit peu élégant, il résout le problème:
http://weblogs.java.net/blog /johnsmart/archive/2008/12/subversion_mave.html
L’autre solution consiste à utiliser Git. (Moi == écrit actuellement sur Maven et Git)
Liens potentiellement utiles:
http://weblogs.java.net/blog /johnsmart/archive/2008/12/subversion_mave.html (mentionné précédemment)
http://jira.codehaus.org/browse/MRELEASE-427 (le vrai bug?)
http://jira.codehaus.org/browse/SCM-406 (bug lié)
http://olafsblog.sysbsb.de/?p=73 (plus récent et peut-être plus utile post)
Autant que je sache, il s'agit d'un bogue dans Subversion 1.5 et non directement lié à maven. Cependant, une solution de contournement pour y remédier consiste à mettre à jour le référentiel svn local et à exécuter de nouveau la version: prepare goal.
J'ai passé pas mal de temps à me battre avec ça. Quelque chose de différent dans SVN 1.5.1+ interrompt la validation d'une étiquette directement dans la copie de travail - c'est exactement ce que Maven fait. Il y a encore beaucoup d'indications à faire pour déterminer qui est responsable de la résolution du problème.
Vous pouvez effectuer une 'mise à jour svn' et réexécuter la commande release, mais si vous effectuez une branche: release, le plug-in release ne renverra pas vos fichiers POM à leur état précédent.
La meilleure solution que je connaisse consiste à revenir à Subversion 1.5.0.
Ceci est corrigé dans la version la plus récente du plugin, 2.0-beta-9
J'ai lu ce message car j'avais un problème de compilation sur un serveur sur lequel svn n'était pas installé.
Cela a aidé: Jenkins avec Subversion