Revert "Switch to Paths, which are more reliable and powerful compared to Files"

This reverts commit 52bfff25ffcccca1061000dc60395090e233d371.
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
index 066c796..d068ce4 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java
@@ -21,7 +21,6 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -170,7 +169,7 @@
                             List<MavenProject> reactorProjects, boolean simulate, ReleaseResult result )
         throws ReleaseExecutionException, ReleaseFailureException
     {
-        Path commonBasedir;
+        String commonBasedir;
         try
         {
             commonBasedir = ReleaseUtil.getCommonBasedir( reactorProjects );
@@ -190,7 +189,7 @@
     }
 
     private void transformProject( MavenProject project, ReleaseDescriptor releaseDescriptor,
-                                   ReleaseEnvironment releaseEnvironment, Path commonBasedir,
+                                   ReleaseEnvironment releaseEnvironment, String commonBasedir,
                                    boolean simulate, ReleaseResult result )
         throws ReleaseExecutionException, ReleaseFailureException
     {
@@ -245,7 +244,7 @@
     }
 
     private void transformDocument( MavenProject project, Model modelTarget, ReleaseDescriptor releaseDescriptor,
-                                    Path commonBasedir, ScmRepository scmRepository,
+                                    String commonBasedir, ScmRepository scmRepository,
                                     ReleaseResult result, boolean simulate )
         throws ReleaseExecutionException, ReleaseFailureException
     {
@@ -569,7 +568,7 @@
 
     protected abstract void transformScm( MavenProject project, Model modelTarget, ReleaseDescriptor releaseDescriptor,
                                           String projectId, ScmRepository scmRepository,
-                                          ReleaseResult result, Path commonBasedir )
+                                          ReleaseResult result, String commonBasedir )
         throws ReleaseExecutionException;
 
     /**
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java
index 60f78b8..33f9537 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/CheckoutProjectFromScm.java
@@ -224,7 +224,7 @@
             String basedir;
             try
             {
-                basedir = ReleaseUtil.getCommonBasedir( reactorProjects ).toString();
+                basedir = ReleaseUtil.getCommonBasedir( reactorProjects );
             }
             catch ( IOException e )
             {
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomVersionsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomVersionsPhase.java
index 2bbd7b6..0ef834e 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomVersionsPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomVersionsPhase.java
@@ -19,8 +19,6 @@
  * under the License.
  */
 
-import java.nio.file.Path;
-
 import org.apache.maven.model.Model;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.scm.repository.ScmRepository;
@@ -47,7 +45,7 @@
     @Override
     protected void transformScm( MavenProject project, Model modelTarget, ReleaseDescriptor releaseDescriptor,
                                  String projectId, ScmRepository scmRepository, ReleaseResult result,
-                                 Path commonBasedir )
+                                 String commonBasedir )
         throws ReleaseExecutionException
     {
         // We are only updating versions no mods to scm needed
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForBranchPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForBranchPhase.java
index 840f89a..586e97d 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForBranchPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForBranchPhase.java
@@ -20,7 +20,6 @@
  */
 
 import java.io.IOException;
-import java.nio.file.Path;
 
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.model.Model;
@@ -53,7 +52,7 @@
     @Override
     protected void transformScm( MavenProject project, Model modelTarget, ReleaseDescriptor releaseDescriptor,
                                  String projectId, ScmRepository scmRepository, ReleaseResult result,
-                                 Path commonBasedir )
+                                 String commonBasedir )
     throws ReleaseExecutionException
     {
         // If SCM is null in original model, it is inherited, no mods needed
@@ -106,7 +105,7 @@
     }
 
     private boolean translateScm( MavenProject project, ReleaseDescriptor releaseDescriptor, Scm scmTarget,
-                                  ScmRepository scmRepository, ReleaseResult relResult, Path commonBasedir )
+                                  ScmRepository scmRepository, ReleaseResult relResult, String commonBasedir )
     throws IOException
     {
         ScmTranslator translator = getScmTranslators().get( scmRepository.getProvider() );
@@ -128,7 +127,9 @@
                 branchBase = "scm:svn:" + branchBase;
             }
 
-            Path workingDirectory = project.getBasedir().toPath().toRealPath();
+            String workingDirectory =
+                ReleaseUtil.isSymlink( project.getBasedir() ) ? project.getBasedir().getCanonicalPath()
+                                : project.getBasedir().getAbsolutePath();
 
             int count =
                 ReleaseUtil.getBaseWorkingDirectoryParentCount( commonBasedir, workingDirectory );
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java
index 3c6aa82..eb5ff4d 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForDevelopmentPhase.java
@@ -19,8 +19,6 @@
  * under the License.
  */
 
-import java.nio.file.Path;
-
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Scm;
 import org.apache.maven.project.MavenProject;
@@ -49,7 +47,7 @@
     @Override
     protected void transformScm( MavenProject project, Model modelTarget, ReleaseDescriptor releaseDescriptor,
                                  String projectId, ScmRepository scmRepository, ReleaseResult result,
-                                 Path commonBasedir )
+                                 String commonBasedir )
         throws ReleaseExecutionException
     {
         // If SCM is null in original model, it is inherited, no mods needed
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java
index 4e4bea4..dc774a1 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/RewritePomsForReleasePhase.java
@@ -20,7 +20,6 @@
  */
 
 import java.io.IOException;
-import java.nio.file.Path;
 
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.model.Model;
@@ -52,7 +51,7 @@
     @Override
     protected void transformScm( MavenProject project, Model modelTarget, ReleaseDescriptor releaseDescriptor,
                                  String projectId, ScmRepository scmRepository, ReleaseResult result,
-                                 Path commonBasedir )
+                                 String commonBasedir )
     throws ReleaseExecutionException
     {
         // If SCM is null in original model, it is inherited, no mods needed
@@ -104,7 +103,7 @@
     }
 
     private boolean translateScm( MavenProject project, ReleaseDescriptor releaseDescriptor, Scm scmTarget,
-                                  ScmRepository scmRepository, ReleaseResult relResult, Path commonBasedir )
+                                  ScmRepository scmRepository, ReleaseResult relResult, String commonBasedir )
         throws IOException
     {
         ScmTranslator translator = getScmTranslators().get( scmRepository.getProvider() );
@@ -126,8 +125,9 @@
                 tagBase = "scm:svn:" + tagBase;
             }
 
-            Path workingDirectory = project.getBasedir().toPath().toRealPath();
-
+            String workingDirectory =
+                ReleaseUtil.isSymlink( project.getBasedir() ) ? project.getBasedir().getCanonicalPath()
+                                : project.getBasedir().getAbsolutePath();
             int count =
                 ReleaseUtil.getBaseWorkingDirectoryParentCount( commonBasedir, workingDirectory );
             if ( scm.getConnection() != null )
diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
index 587a50c..00f2c1e 100644
--- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
+++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/util/ReleaseUtil.java
@@ -26,7 +26,9 @@
 import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Locale;
 
+import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.maven.model.Model;
 import org.apache.maven.project.MavenProject;
@@ -40,6 +42,7 @@
 import org.codehaus.plexus.interpolation.PrefixAwareRecursionInterceptor;
 import org.codehaus.plexus.interpolation.PrefixedObjectValueSource;
 import org.codehaus.plexus.interpolation.StringSearchInterpolator;
+import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
 
@@ -55,6 +58,8 @@
     @SuppressWarnings( "checkstyle:constantname" )
     public static final String POMv4 = "pom.xml";
 
+    private static final String FS = File.separator;
+
     /**
      * The line separator to use.
      */
@@ -167,7 +172,7 @@
                                                                            List<MavenProject> reactorProjects )
         throws ReleaseExecutionException
     {
-        Path basedir;
+        String basedir;
         try
         {
             basedir = getCommonBasedir( reactorProjects );
@@ -180,37 +185,82 @@
 
         int parentLevels =
             getBaseWorkingDirectoryParentCount( basedir,
-                                                Paths.get( releaseDescriptor.getWorkingDirectory() ) );
+                                                FileUtils.normalize( releaseDescriptor.getWorkingDirectory() ) );
 
         String url = releaseDescriptor.getScmSourceUrl();
         url = realignScmUrl( parentLevels, url );
 
         ReleaseDescriptorBuilder builder = new ReleaseDescriptorBuilder();
-        builder.setWorkingDirectory( basedir.toFile().getAbsolutePath() );
+        builder.setWorkingDirectory( basedir );
         builder.setScmSourceUrl( url );
         return ReleaseUtils.buildReleaseDescriptor( builder );
     }
 
-    public static Path getCommonBasedir( List<MavenProject> reactorProjects )
+    public static String getCommonBasedir( List<MavenProject> reactorProjects )
         throws IOException
     {
-        Path basePath = reactorProjects.get( 0 ).getBasedir().toPath();
-        
-        for ( MavenProject reactorProject : reactorProjects )
-        {
-            Path matchPath = reactorProject.getBasedir().toPath();
-            while ( !basePath.startsWith( matchPath ) )
-            {
-                matchPath = matchPath.getParent();
-            }
-            basePath = matchPath;
-        }
-        return basePath;
+        return getCommonBasedir( reactorProjects, FS );
     }
 
-    public static int getBaseWorkingDirectoryParentCount( final Path baseDirectory, final Path workingDirectory )
+    public static String getCommonBasedir( List<MavenProject> reactorProjects, String separator )
+        throws IOException
     {
-        return Math.max( 0, workingDirectory.normalize().getNameCount() - baseDirectory.normalize().getNameCount() );
+        String[] baseDirs = new String[reactorProjects.size()];
+        int idx = 0;
+        for ( MavenProject p : reactorProjects )
+        {
+            String dir = p.getBasedir().getCanonicalPath();
+
+            // always end with separator so that we know what is a path and what is a partial directory name in the
+            // next call
+            if ( !dir.endsWith( separator ) )
+            {
+                dir = dir + separator;
+            }
+            baseDirs[idx++] = dir;
+        }
+
+        String basedir = StringUtils.getCommonPrefix( baseDirs );
+
+        int separatorPos = basedir.lastIndexOf( separator );
+        if ( !basedir.endsWith( separator ) && separatorPos >= 0 )
+        {
+            basedir = basedir.substring( 0, separatorPos );
+        }
+
+        if ( basedir.endsWith( separator ) && basedir.length() > 1 )
+        {
+            basedir = basedir.substring( 0, basedir.length() - 1 );
+        }
+
+        return basedir;
+    }
+
+    public static int getBaseWorkingDirectoryParentCount( String basedir, String workingDirectory )
+    {
+        int num = 0;
+
+        // we can safely assume case-insensitivity as we are just backtracking, not comparing. This helps with issues
+        // on Windows with C: vs c:
+        workingDirectory = FilenameUtils.normalize( workingDirectory.toLowerCase( Locale.ENGLISH ) );
+        basedir = FilenameUtils.normalize( basedir.toLowerCase( Locale.ENGLISH ) );
+
+        // MRELEASE-663
+        // For Windows is does matter if basedir ends with a file-separator or not to be able to compare.
+        // Using the parent of a dummy file makes it possible to compare them OS-independent
+        Path workingDirectoryFile = Paths.get( workingDirectory, ".tmp" ).getParent();
+        Path basedirFile = Paths.get( basedir, ".tmp" ).getParent();
+
+        if ( !workingDirectoryFile.equals( basedirFile ) && workingDirectory.startsWith( basedir ) )
+        {
+            do
+            {
+                workingDirectoryFile = workingDirectoryFile.getParent();
+                num++;
+            }
+            while ( !workingDirectoryFile.equals( basedirFile ) );
+        }
+        return num;
     }
 
     public static String realignScmUrl( int parentLevels, String url )
diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java
index 3cdb7e4..6b063c9 100644
--- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java
+++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/util/ReleaseUtilTest.java
@@ -25,8 +25,6 @@
 import static org.junit.Assume.*;
 
 import java.io.File;
-import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.util.Arrays;
 import java.util.Collections;
 
@@ -52,129 +50,122 @@
     @Test
     public void testGetCommonBasedirSingleProject() throws Exception
     {
-        assertEquals( Paths.get( "/working/directory/flat-multi-module/project" ),
-                      ReleaseUtil.getCommonBasedir( Collections.singletonList( createProject( "/working/directory/flat-multi-module/project" ) ) ) );
+        assertEquals( "/working/directory/flat-multi-module/project", ReleaseUtil.getCommonBasedir(
+            Collections.singletonList( createProject( "/working/directory/flat-multi-module/project" ) ), "/" ) );
     }
 
     @Test
     public void testGetCommonBasedirSingleProjectWindows() throws Exception
     {
-        assertEquals( Paths.get( "C:\\working\\directory\\flat-multi-module\\project" ),
-                      ReleaseUtil.getCommonBasedir( Collections.singletonList( createProject( "C:\\working\\directory\\flat-multi-module\\project" ) ) ) );
+        assertEquals( "C:\\working\\directory\\flat-multi-module\\project", ReleaseUtil.getCommonBasedir(
+            Collections.singletonList( createProject( "C:\\working\\directory\\flat-multi-module\\project" ) ),
+            "\\" ) );
     }
 
     @Test
     public void testGetCommonBasedirOfFlatMultiModule()
         throws Exception
     {
-        assertEquals( Paths.get( "/working/directory/flat-multi-module" ),
-                      ReleaseUtil.getCommonBasedir( Arrays.asList( new MavenProject[] {
-                          createProject( "/working/directory/flat-multi-module/root-project" ),
-                          createProject( "/working/directory/flat-multi-module/core" ),
-                          createProject( "/working/directory/flat-multi-module/webapp" ) } ) ) );
+        assertEquals( "/working/directory/flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList(
+            new MavenProject[]{createProject( "/working/directory/flat-multi-module/root-project" ),
+                createProject( "/working/directory/flat-multi-module/core" ),
+                createProject( "/working/directory/flat-multi-module/webapp" )} ), "/" ) );
     }
 
     @Test
     public void testGetCommonBasedirOfFlatMultiModuleWindows()
         throws Exception
     {
-        assertEquals( Paths.get( "C:\\working\\directory\\flat-multi-module" ),
-                      ReleaseUtil.getCommonBasedir( Arrays.asList( new MavenProject[] {
-                          createProject( "C:\\working\\directory\\flat-multi-module\\root-project" ),
-                          createProject( "C:\\working\\directory\\flat-multi-module\\core" ),
-                          createProject( "C:\\working\\directory\\flat-multi-module\\webapp" ) } ) ) );
+        assertEquals( "C:\\working\\directory\\flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList(
+            new MavenProject[]{createProject( "C:\\working\\directory\\flat-multi-module\\root-project" ),
+                createProject( "C:\\working\\directory\\flat-multi-module\\core" ),
+                createProject( "C:\\working\\directory\\flat-multi-module\\webapp" )} ), "\\" ) );
     }
 
     @Test
     public void testGetCommonBasedirUppercaseLowerCaseWindows()
         throws Exception
     {
-        assertEquals( Paths.get( "C:\\WORKING\\root" ),
-                      ReleaseUtil.getCommonBasedir( Arrays.asList( new MavenProject[] {
-                          createProject( "c:\\WORKING\\root", "C:\\WORKING\\root" ),
-                          createProject( "c:\\working\\root\\project1", "C:\\WORKING\\root\\project1" ),
-                          createProject( "C:\\WORKING\\root\\project2", "C:\\WORKING\\root\\project2" ) } ) ) );
+        assertEquals( "C:\\WORKING\\root", ReleaseUtil.getCommonBasedir( Arrays.asList(
+            new MavenProject[]{createProject( "c:\\WORKING\\root", "C:\\WORKING\\root" ),
+                createProject( "c:\\working\\root\\project1", "C:\\WORKING\\root\\project1" ),
+                createProject( "C:\\WORKING\\root\\project2", "C:\\WORKING\\root\\project2" )} ), "\\" ) );
     }
 
     @Test
     public void testGetCommonBasedirOfFlatMultiModuleSimilarArtifactIds()
         throws Exception
     {
-        assertEquals( Paths.get( "/working/directory/flat-multi-module" ),
-                      ReleaseUtil.getCommonBasedir( Arrays.asList( new MavenProject[] {
-                          createProject( "/working/directory/flat-multi-module/release-parent" ),
-                          createProject( "/working/directory/flat-multi-module/release-module1" ),
-                          createProject( "/working/directory/flat-multi-module/release-module2" ) } ) ) );
+        assertEquals( "/working/directory/flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList(
+            new MavenProject[]{createProject( "/working/directory/flat-multi-module/release-parent" ),
+                createProject( "/working/directory/flat-multi-module/release-module1" ),
+                createProject( "/working/directory/flat-multi-module/release-module2" )} ), "/" ) );
     }
 
     @Test
     public void testGetCommonBasedirOfFlatMultiModuleSimilarArtifactIdsWindows()
         throws Exception
     {
-        assertEquals( Paths.get( "c:\\working\\directory\\flat-multi-module" ),
-                      ReleaseUtil.getCommonBasedir( Arrays.asList( new MavenProject[] {
-                          createProject( "c:\\working\\directory\\flat-multi-module\\release-parent" ),
-                          createProject( "c:\\working\\directory\\flat-multi-module\\release-module1" ),
-                          createProject( "c:\\working\\directory\\flat-multi-module\\release-module2" ) } ) ) );
+        assertEquals( "c:\\working\\directory\\flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList(
+            new MavenProject[]{createProject( "c:\\working\\directory\\flat-multi-module\\release-parent" ),
+                createProject( "c:\\working\\directory\\flat-multi-module\\release-module1" ),
+                createProject( "c:\\working\\directory\\flat-multi-module\\release-module2" )} ), "\\" ) );
     }
 
     @Test
     public void testGetCommonBasedirOfRegularMultiModule()
         throws Exception
     {
-        assertEquals( Paths.get( "/working/directory/flat-multi-module" ),
-                      ReleaseUtil.getCommonBasedir( Arrays.asList( new MavenProject[] {
-                          createProject( "/working/directory/flat-multi-module" ),
-                          createProject( "/working/directory/flat-multi-module/core" ),
-                          createProject( "/working/directory/flat-multi-module/webapp" ) } ) ) );
+        assertEquals( "/working/directory/flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList(
+            new MavenProject[]{createProject( "/working/directory/flat-multi-module" ),
+                createProject( "/working/directory/flat-multi-module/core" ),
+                createProject( "/working/directory/flat-multi-module/webapp" )} ), "/" ) );
     }
 
     @Test
     public void testGetCommonBasedirOfRegularMultiModuleParentNotBeeingFirstInReactor()
         throws Exception
     {
-        assertEquals( Paths.get( "/working/directory/flat-multi-module" ),
-                      ReleaseUtil.getCommonBasedir( Arrays.asList( new MavenProject[] {
-                          createProject( "/working/directory/flat-multi-module/core" ),
-                          createProject( "/working/directory/flat-multi-module" ),
-                          createProject( "/working/directory/flat-multi-module/webapp" ) } ) ) );
+        assertEquals( "/working/directory/flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList(
+            new MavenProject[]{
+                createProject( "/working/directory/flat-multi-module/core" ),
+                createProject( "/working/directory/flat-multi-module" ),
+                createProject( "/working/directory/flat-multi-module/webapp" )} ), "/" ) );
     }
 
     @Test
     public void testGetCommonBasedirOfRegularMultiModuleWindowsPath()
         throws Exception
     {
-        assertEquals( Paths.get( "c:\\working\\directory\\flat-multi-module" ),
-                      ReleaseUtil.getCommonBasedir( Arrays.asList( new MavenProject[] {
-                          createProject( "c:\\working\\directory\\flat-multi-module\\core" ),
-                          createProject( "c:\\working\\directory\\flat-multi-module" ),
-                          createProject( "c:\\working\\directory\\flat-multi-module\\webapp" ) } ) ) );
+        assertEquals( "c:\\working\\directory\\flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList(
+            new MavenProject[]{
+                createProject( "c:\\working\\directory\\flat-multi-module\\core" ),
+                createProject( "c:\\working\\directory\\flat-multi-module" ),
+                createProject( "c:\\working\\directory\\flat-multi-module\\webapp" )} ), "\\" ) );
     }
 
     @Test
     public void testGetCommonBasedirOfFlatMultiModuleWithMultipleLevels()
         throws Exception
     {
-        assertEquals( Paths.get( "/working/directory/flat-multi-module" ),
-                      ReleaseUtil.getCommonBasedir( Arrays.asList( new MavenProject[] {
-                          createProject( "/working/directory/flat-multi-module/root-project" ),
-                          createProject( "/working/directory/flat-multi-module/core" ),
-                          createProject( "/working/directory/flat-multi-module/common/utils" ),
-                          createProject( "/working/directory/flat-multi-module/common/xml" ),
-                          createProject( "/working/directory/flat-multi-module/webapp" ) } ) ) );
+        assertEquals( "/working/directory/flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList(
+            new MavenProject[]{createProject( "/working/directory/flat-multi-module/root-project" ),
+                createProject( "/working/directory/flat-multi-module/core" ),
+                createProject( "/working/directory/flat-multi-module/common/utils" ),
+                createProject( "/working/directory/flat-multi-module/common/xml" ),
+                createProject( "/working/directory/flat-multi-module/webapp" )} ), "/" ) );
     }
 
     @Test
     public void testGetCommonBasedirOfFlatMultiModuleWithDescendingHierarchy()
         throws Exception
     {
-        assertEquals( Paths.get( "/working/directory/flat-multi-module" ),
-                      ReleaseUtil.getCommonBasedir( Arrays.asList( new MavenProject[] {
-                          createProject( "/working/directory/flat-multi-module/level/1/2/3" ),
-                          createProject( "/working/directory/flat-multi-module/level/1/2" ),
-                          createProject( "/working/directory/flat-multi-module/level/1" ),
-                          createProject( "/working/directory/flat-multi-module/level" ),
-                          createProject( "/working/directory/flat-multi-module/other" ) } ) ) );
+        assertEquals( "/working/directory/flat-multi-module", ReleaseUtil.getCommonBasedir( Arrays.asList(
+            new MavenProject[]{createProject( "/working/directory/flat-multi-module/level/1/2/3" ),
+                createProject( "/working/directory/flat-multi-module/level/1/2" ),
+                createProject( "/working/directory/flat-multi-module/level/1" ),
+                createProject( "/working/directory/flat-multi-module/level" ),
+                createProject( "/working/directory/flat-multi-module/other" )} ), "/" ) );
     }
 
     @Test
@@ -241,90 +232,90 @@
     @Test
     public void testGetBaseWorkingDirectoryParentCountSameDirectory()
     {
-        Path workingDirectory = Paths.get( "/working/directory/maven/release" );
-        Path basedir = Paths.get( "/working/directory/maven/release" );
+        String workingDirectory = "/working/directory/maven/release";
+        String basedir = "/working/directory/maven/release";
         assertEquals( 0, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
     }
 
     @Test
     public void testGetBaseWorkingDirectoryParentCountSameDirectoryDotCharacter()
     {
-        Path workingDirectory = Paths.get( "/working/directory/maven/release/." ).toAbsolutePath();
-        assertTrue( workingDirectory.toString().contains( "." ) );
-        Path basedir = Paths.get( "/working/directory/maven/release" ).toAbsolutePath();
+        String workingDirectory = new File( "/working/directory/maven/release/." ).getAbsolutePath();
+        assertTrue( workingDirectory.contains( "." ) );
+        String basedir = new File( "/working/directory/maven/release" ).getAbsolutePath();
         assertEquals( 0, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
 
         // finish with slash
-        workingDirectory = Paths.get( "/working/directory/maven/release/./" ).toAbsolutePath();
-        assertTrue( workingDirectory.toString().contains( "." ) );
-        basedir = Paths.get( "/working/directory/maven/release" ).toAbsolutePath();
+        workingDirectory = new File( "/working/directory/maven/release/./" ).getAbsolutePath();
+        assertTrue( workingDirectory.contains( "." ) );
+        basedir = new File( "/working/directory/maven/release" ).getAbsolutePath();
         assertEquals( 0, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
     }
 
     @Test
     public void testGetBaseWorkingDirectoryParentCountSubdirectory()
     {
-        Path workingDirectory = Paths.get( "/working/directory/maven/release" ).toAbsolutePath();
-        Path basedir = Paths.get( "/working/directory/maven/release/maven-release-manager" ).toAbsolutePath();
+        String workingDirectory = new File( "/working/directory/maven/release" ).getAbsolutePath();
+        String basedir = new File( "/working/directory/maven/release/maven-release-manager" ).getAbsolutePath();
         assertEquals( 0, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
     }
 
     @Test
     public void testGetBaseWorkingDirectoryParentCountParentDirectory()
     {
-        Path workingDirectory =
-                        Paths.get( "/working/directory/maven/release/maven-release-manager" ).toAbsolutePath();
-        Path basedir = Paths.get( "/working/directory/maven/release" ).toAbsolutePath();
+        String workingDirectory =
+            new File( "/working/directory/maven/release/maven-release-manager" ).getAbsolutePath();
+        String basedir = new File( "/working/directory/maven/release" ).getAbsolutePath();
         assertEquals( 1, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
     }
 
     @Test
     public void testGetBaseWorkingDirectoryParentCountParentDirectoryDotCharacter()
     {
-        Path workingDirectory =
-            Paths.get( "/working/directory/maven/release/maven-release-manager/." ).toAbsolutePath();
-        assertTrue( workingDirectory.toString().contains( "." ) );
-        Path basedir = Paths.get( "/working/directory/maven/release" ).toAbsolutePath();
+        String workingDirectory =
+            new File( "/working/directory/maven/release/maven-release-manager/." ).getAbsolutePath();
+        assertTrue( workingDirectory.contains( "." ) );
+        String basedir = new File( "/working/directory/maven/release" ).getAbsolutePath();
         assertEquals( 1, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
 
         // finish with slash
-        workingDirectory = Paths.get( "/working/directory/maven/release/maven-release-manager/./" ).toAbsolutePath();
-        assertTrue( workingDirectory.toString().contains( "." ) );
-        basedir = Paths.get( "/working/directory/maven/release" ).toAbsolutePath();
+        workingDirectory = new File( "/working/directory/maven/release/maven-release-manager/./" ).getAbsolutePath();
+        assertTrue( workingDirectory.contains( "." ) );
+        basedir = new File( "/working/directory/maven/release" ).getAbsolutePath();
         assertEquals( 1, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
     }
 
     @Test
     public void testGetBaseWorkingDirectoryParentCountParentDirectoryMultiple()
     {
-        Path workingDirectory =
-            Paths.get( "/working/directory/maven/release/maven-release-manager" ).toAbsolutePath();
-        Path basedir = Paths.get( "/working/directory" ).toAbsolutePath();
+        String workingDirectory =
+            new File( "/working/directory/maven/release/maven-release-manager" ).getAbsolutePath();
+        String basedir = new File( "/working/directory" ).getAbsolutePath();
         assertEquals( 3, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
     }
 
     @Test
     public void testGetBaseWorkingDirectoryParentCountParentDirectoryMultipleDotCharacter()
     {
-        Path workingDirectory =
-            Paths.get( "/working/directory/maven/release/maven-release-manager/./." ).toAbsolutePath();
-        assertTrue( workingDirectory.toString().contains( "." ) );
-        Path basedir = Paths.get( "/working/directory" ).toAbsolutePath();
+        String workingDirectory =
+            new File( "/working/directory/maven/release/maven-release-manager/./." ).getAbsolutePath();
+        assertTrue( workingDirectory.contains( "." ) );
+        String basedir = new File( "/working/directory" ).getAbsolutePath();
         assertEquals( 3, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
 
         // finish with slash
-        workingDirectory = Paths.get( "/working/directory/maven/release/maven-release-manager/././" ).toAbsolutePath();
-        assertTrue( workingDirectory.toString().contains( "." ) );
-        basedir = Paths.get( "/working/directory" ).toAbsolutePath();
+        workingDirectory = new File( "/working/directory/maven/release/maven-release-manager/././" ).getAbsolutePath();
+        assertTrue( workingDirectory.contains( "." ) );
+        basedir = new File( "/working/directory" ).getAbsolutePath();
         assertEquals( 3, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
     }
 
     @Test
     public void testGetBaseWorkingDirectoryParentCountDifferentCase()
     {
-        Path workingDirectory =
-            Paths.get( "/Working/Directory/maven/release/maven-release-manager" ).toAbsolutePath();
-        Path basedir = Paths.get( "/working/directory" ).toAbsolutePath();
+        String workingDirectory =
+            new File( "/Working/Directory/maven/release/maven-release-manager" ).getAbsolutePath();
+        String basedir = new File( "/working/directory" ).getAbsolutePath();
         assertEquals( 3, ReleaseUtil.getBaseWorkingDirectoryParentCount( basedir, workingDirectory ) );
     }
 
@@ -336,10 +327,10 @@
     {
         assumeTrue( Os.isFamily( Os.FAMILY_WINDOWS ) );
 
-        assertEquals( 2, ReleaseUtil.getBaseWorkingDirectoryParentCount( Paths.get( "C:" ), Paths.get( "C:\\working\\directory" ) ) );
-        assertEquals( 2, ReleaseUtil.getBaseWorkingDirectoryParentCount( Paths.get( "C:" ), Paths.get( "C:\\working\\directory\\" ) ) );
-        assertEquals( 2, ReleaseUtil.getBaseWorkingDirectoryParentCount( Paths.get( "C:\\" ), Paths.get( "C:\\working\\directory" ) ) );
-        assertEquals( 2, ReleaseUtil.getBaseWorkingDirectoryParentCount( Paths.get( "C:\\" ), Paths.get( "C:\\working\\directory\\" ) ) );
+        assertEquals( 2, ReleaseUtil.getBaseWorkingDirectoryParentCount( "C:", "C:\\working\\directory" ) );
+        assertEquals( 2, ReleaseUtil.getBaseWorkingDirectoryParentCount( "C:", "C:\\working\\directory\\" ) );
+        assertEquals( 2, ReleaseUtil.getBaseWorkingDirectoryParentCount( "C:\\", "C:\\working\\directory" ) );
+        assertEquals( 2, ReleaseUtil.getBaseWorkingDirectoryParentCount( "C:\\", "C:\\working\\directory\\" ) );
     }
 
     private static MavenProject createProject( String basedir )