You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Conan Cook (JIRA)" <ji...@codehaus.org> on 2012/06/08 19:25:21 UTC

[jira] (MRELEASE-769) Release:prepare fails on Windows when commonBaseDir of all reactor projects is root drive (e.g. D:\)

Conan Cook created MRELEASE-769:
-----------------------------------

             Summary: Release:prepare fails on Windows when commonBaseDir of all reactor projects is root drive (e.g. D:\)
                 Key: MRELEASE-769
                 URL: https://jira.codehaus.org/browse/MRELEASE-769
             Project: Maven 2.x Release Plugin
          Issue Type: Bug
          Components: prepare
    Affects Versions: 2.3.1
         Environment: Windows 7 x64, Maven 3.0.4, Maven Release Plugin 2.3.1
            Reporter: Conan Cook
         Attachments: ReleaseUtil_WindowsRootPatch

When running a release:prepare for a project in the RewritePomsForRelease phase, a NullPointerException is thrown when calculating the number of parent folders above the project root (part of the .  This occurs when the reactor projects have a commonBaseDir that is the root drive - in my case D: .  This is because the commonBaseDir is calculated to be "D:", whereas the java.io.File.getParentFile() method used in ReleaseUtil.getBaseWorkingDirectoryParentCount() returns "D:\" when it gets to the root.  As a result the equality comparison between these directories fails, and the method continues looking above that location for a parent folder, resulting in the NPE.

This can be reproduced by creating a reactor build where projects in the reactor only share a commonBaseDir which is a Windows root drive - I haven't included a test case because it's dependent on where you put it, not what it contains.

I've attached a patch which normalises the commonBaseDir name by adding a trailing slash, in ReleaseUtil.java in the Maven Release Manager project.  This could also be done after line 310 of the AbstractRewritePomsPhase, where the variable is originally assigned, but the ReleaseUtil.getCommonBasedir() method explicitly removes the trailing slash, so it seemed best to do it as close to the problem as possible.

Stack trace from mvn -DdryRun=true release:prepare -X
{code}
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.1:prepare (default-cli) on project amee-platform-api: Execution default-cli of goal org.apache.maven.plugins:maven-release-plugin:2.3.1:prepare failed. NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.1:prepare (default-cli) on project amee-platform-api: Execution default-cli of goal org.apache.maven.plugins:maven-release-plugin:2.3.1:prepare failed.
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225)
        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.PluginExecutionException: Execution default-cli of goal org.apache.maven.plugins:maven-release-plugin:2.3.1:prepare failed.
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
        ... 19 more
Caused by: java.lang.NullPointerException
        at org.apache.maven.shared.release.util.ReleaseUtil.getBaseWorkingDirectoryParentCount(ReleaseUtil.java:249)
        at org.apache.maven.shared.release.phase.RewritePomsForReleasePhase.translateScm(RewritePomsForReleasePhase.java:135)
        at org.apache.maven.shared.release.phase.RewritePomsForReleasePhase.transformScm(RewritePomsForReleasePhase.java:68)
        at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.transformDocument(AbstractRewritePomsPhase.java:317)
        at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.transformProject(AbstractRewritePomsPhase.java:219)
        at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.transform(AbstractRewritePomsPhase.java:125)
        at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.simulate(AbstractRewritePomsPhase.java:712)
        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)
        at org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:247)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
        ... 20 more
{code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] (MRELEASE-769) Release:prepare fails on Windows when commonBaseDir of all reactor projects is root drive (e.g. D:\)

Posted by "Robert Scholte (JIRA)" <ji...@codehaus.org>.
     [ https://jira.codehaus.org/browse/MRELEASE-769?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Robert Scholte closed MRELEASE-769.
-----------------------------------

    Resolution: Duplicate
      Assignee: Robert Scholte
    
> Release:prepare fails on Windows when commonBaseDir of all reactor projects is root drive (e.g. D:\)
> ----------------------------------------------------------------------------------------------------
>
>                 Key: MRELEASE-769
>                 URL: https://jira.codehaus.org/browse/MRELEASE-769
>             Project: Maven 2.x Release Plugin
>          Issue Type: Bug
>          Components: prepare
>    Affects Versions: 2.3.1
>         Environment: Windows 7 x64, Maven 3.0.4, Maven Release Plugin 2.3.1
>            Reporter: Conan Cook
>            Assignee: Robert Scholte
>         Attachments: ReleaseUtil_WindowsRootPatch
>
>
> When running a release:prepare for a project in the RewritePomsForRelease phase, a NullPointerException is thrown when calculating the number of parent folders above the project root (part of the .  This occurs when the reactor projects have a commonBaseDir that is the root drive - in my case D: .  This is because the commonBaseDir is calculated to be "D:", whereas the java.io.File.getParentFile() method used in ReleaseUtil.getBaseWorkingDirectoryParentCount() returns "D:\" when it gets to the root.  As a result the equality comparison between these directories fails, and the method continues looking above that location for a parent folder, resulting in the NPE.
> This can be reproduced by creating a reactor build where projects in the reactor only share a commonBaseDir which is a Windows root drive - I haven't included a test case because it's dependent on where you put it, not what it contains.
> I've attached a patch which normalises the commonBaseDir name by adding a trailing slash, in ReleaseUtil.java in the Maven Release Manager project.  This could also be done after line 310 of the AbstractRewritePomsPhase, where the variable is originally assigned, but the ReleaseUtil.getCommonBasedir() method explicitly removes the trailing slash, so it seemed best to do it as close to the problem as possible.
> Stack trace from mvn -DdryRun=true release:prepare -X
> {code}
> [ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.1:prepare (default-cli) on project amee-platform-api: Execution default-cli of goal org.apache.maven.plugins:maven-release-plugin:2.3.1:prepare failed. NullPointerException -> [Help 1]
> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.1:prepare (default-cli) on project amee-platform-api: Execution default-cli of goal org.apache.maven.plugins:maven-release-plugin:2.3.1:prepare failed.
>         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225)
>         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.PluginExecutionException: Execution default-cli of goal org.apache.maven.plugins:maven-release-plugin:2.3.1:prepare failed.
>         at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110)
>         at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
>         ... 19 more
> Caused by: java.lang.NullPointerException
>         at org.apache.maven.shared.release.util.ReleaseUtil.getBaseWorkingDirectoryParentCount(ReleaseUtil.java:249)
>         at org.apache.maven.shared.release.phase.RewritePomsForReleasePhase.translateScm(RewritePomsForReleasePhase.java:135)
>         at org.apache.maven.shared.release.phase.RewritePomsForReleasePhase.transformScm(RewritePomsForReleasePhase.java:68)
>         at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.transformDocument(AbstractRewritePomsPhase.java:317)
>         at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.transformProject(AbstractRewritePomsPhase.java:219)
>         at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.transform(AbstractRewritePomsPhase.java:125)
>         at org.apache.maven.shared.release.phase.AbstractRewritePomsPhase.simulate(AbstractRewritePomsPhase.java:712)
>         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)
>         at org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:247)
>         at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
>         ... 20 more
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira