[ 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