[ https://jira.codehaus.org/browse/MRELEASE-782?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=337654#comment-337654 ]
Alex Pogrebnyak commented on MRELEASE-782: ------------------------------------------ If you use project superpom pattern, then the real workaround is to use the actual version number of the parent superpom and let the release plugin manage version updates. For example, if you have dependent and dependency module in the aggregator project. {code:title=aggregator-pom.xml|borderStyle=solid} <artifactId>aggregator</artifactId> <parent> <groupId>my.group.id</groupId> <artifactId>parent</artifactId> <version>1.0-SNAPSHOT</version> <relativePath>parent/pom.xml</relativePath> </parent> <modules> <module>dependent</module> <module>dependency</module> </modules> {code} Then in dependent pom do not use property value, but rather the version number directly, i.e. {code:title=dependent-pom.xml|borderStyle=solid} <artifactId>dependent</artifactId> <parent> <groupId>my.group.id</groupId> <artifactId>parent</artifactId> <version>1.0-SNAPSHOT</version> <relativePath>../parent/pom.xml</relativePath> </parent> <dependencies> <dependency> <groupId>my.group.id</groupId> <artifactId>dependency</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> {code} Although books recommend using {{$\{project.version\}}} as the {{<version>}} element of the dependency, this solution is not portable if you want to extend the parent pom from the other project superpom, which may be on a different versioning schema. This is because the way of how properties of the inherited poms get expanded. > Properties defined in a child pom hide all the properties defined in the > parent pom while performing release:prepare > -------------------------------------------------------------------------------------------------------------------- > > Key: MRELEASE-782 > URL: https://jira.codehaus.org/browse/MRELEASE-782 > Project: Maven Release Plugin > Issue Type: Bug > Components: prepare > Affects Versions: 2.3.2 > Environment: Any > Reporter: Marius Dumitru Florea > > Suppose you have this two poms: > {code:title=Parent POM} > ... > <properties> > <my.version>1.6</my.version> > </properties> > ... > {code} > {code:title=Child POM} > ... > <!-- No properties defined here! --> > ... > <plugin> > ... > <dependencies> > <dependency> > ... > <version>${my.version}</version> > </dependency> > </dependencies> > </plugin> > ... > {code} > Running release:prepare on this works just fine. Now, if we add a > {{properties}} section with any property to the child pom we get: > {noformat} > [ERROR] Failed to execute goal > org.apache.maven.plugins:maven-release-plugin:2.3.2:prepare (default-cli) on > project XYZ: The version could not be updated: ${my.version} -> [Help 1] > org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute > goal org.apache.maven.plugins:maven-release-plugin:2.3.2:prepare > (default-cli) on project XYZ: The version could not be updated: ${my.version} > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) > at > org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) > at > org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) > at > org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) > at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) > at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) > at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) > at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) > at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) > at > org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) > at > org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) > at > org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) > Caused by: org.apache.maven.plugin.MojoFailureException: The version could > not be updated: ${commons.version} > at > org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:299) > at > org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:247) > at > org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) > at > org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) > ... 19 more > Caused by: org.apache.maven.shared.release.ReleaseFailureException: The > version could not be updated: ${my.version} > at > org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.rewriteArtifactVersions(AbstractRewritePomsPhase.java:578) > at > org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.transformDocument(AbstractRewritePomsPhase.java:298) > at > org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.transformProject(AbstractRewritePomsPhase.java:220) > at > org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.transform(AbstractRewritePomsPhase.java:126) > at > org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.simulate(AbstractRewritePomsPhase.java:713) > at > org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:228) > at > org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:169) > at > org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:146) > at > org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:107) > at > org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:291) > ... 22 more > {noformat} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira