[ 
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

Reply via email to