Skip to content
Gaël LHEZ edited this page Jan 5, 2026 · 2 revisions

Maven

maven-release-plugin

The version could not be updated

Voir le fichier AbstractRewritePomsPhase.

En lançant le goal release:prepare, on peut obtenir cette exception Java:

org.apache.maven.shared.release.ReleaseFailureException: The version could not be updated: ${intdep.version}
    at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.rewriteArtifactVersions (AbstractRewritePomsPhase.java:593)
    at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.transformDocument (AbstractRewritePomsPhase.java:310)
    at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.transformProject (AbstractRewritePomsPhase.java:231)
    at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.transform (AbstractRewritePomsPhase.java:131)
    at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.execute (AbstractRewritePomsPhase.java:116)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare (DefaultReleaseManager.java:234)

Le problème est lié au fait que la propriété intdep.version n'est pas définie là où la dépendance est utilisée.

Dans mon cas, la cause principale est lié au fait que le plugin eclipse-settings-maven-plugin utilise une dépendance. Or, maven 3.6.1 n'utilise pas les dependencyManagement pour rechercher la bonne version d'une dépendance de plugin.

Ce qui signifie qu'il est quasiment obligatoire de fournir une version dans ces cas-là.

Il ne faut en revanche pas utiliser ${project.version} si le pom.xml est destiné à être hérité par un projet utilisant différentes versions (ce que j'ai voulu faire au travers de mon projet-settings):

  • Mon projet tools a une version 1 (parce que je n'ai l'intention de faire une "release")
  • Mon projet project-settings a une version 2019.06.02.1
  • tools référence la version 2019.06.02.1 mais a pour version 1

Dans ce cas là, ${project.version} sera évaluée à 1 mais au niveau du parent : on ne pourra pas résoudre la dépendance (Maven cherchera la version 1)

  1. Utiliser un <dependencyManagement /> avec une propriété pour les dépendances hors plugin (cas simple).
  2. Utiliser ${project.version} pour les dépendances de plugin au sein d'un même dépôt GIT et uniquement dés lors qu'il n'y a aucune réutilisation des poms parent en dehors de ce dépôt GIT.
  3. Remonter la partie du <pluginManagement /> référençant la dépendance dans le pom parent et laisser les enfants se charger de la configuration.
  4. Ecrire en dur la version de ces dépendances si cette version n'est présente qu'une seule fois, sinon la déclarer dans les <properties /> du pom et s'en servir.

Clone this wiki locally