Index: DefaultMavenProjectBuilder.java
===================================================================
--- DefaultMavenProjectBuilder.java	(revision 398083)
+++ DefaultMavenProjectBuilder.java	(working copy)
@@ -74,13 +74,12 @@
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileNotFoundException;
-import java.io.FileReader;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -1263,8 +1262,8 @@
         Reader reader = null;
         try
         {
-            reader = new FileReader( file );
-            return readModel( projectId, file.getAbsolutePath(), reader, strict );
+            InputStream input = new FileInputStream( file );
+            return readModel( projectId, file.getAbsolutePath(), input, strict );
         }
         catch ( FileNotFoundException e )
         {
@@ -1282,41 +1281,33 @@
         }
     }
 
-    private Model readModel( String projectId, String pomLocation, Reader reader, boolean strict )
-        throws IOException, InvalidProjectModelException
-    {
-        StringWriter sw = new StringWriter();
+    private Model readModel( String projectId, String pomLocation, InputStream input, boolean strict )
+    throws IOException, InvalidProjectModelException
+{
 
-        IOUtil.copy( reader, sw );
-
-        String modelSource = sw.toString();
-
-        if ( modelSource.indexOf( "<modelVersion>4.0.0" ) < 0 )
-        {
+    Model model = null;
+    try
+    {
+        model = modelReader.read( input, null, strict );
+        if(!"4.0.0".equals(model.getModelVersion())) {
             throw new InvalidProjectModelException( projectId, pomLocation, "Not a v4.0.0 POM." );
         }
-
-        StringReader sReader = new StringReader( modelSource );
-
-        try
-        {
-            return modelReader.read( sReader, strict );
-        }
-        catch ( XmlPullParserException e )
-        {
-            throw new InvalidProjectModelException( projectId, pomLocation,
-                                                    "Parse error reading POM. Reason: " + e.getMessage(), e );
-        }
+        return model;
     }
-
+    catch ( XmlPullParserException e )
+    {
+        throw new InvalidProjectModelException( projectId, pomLocation,
+                                                "Parse error reading POM. Reason: " + e.getMessage(), e );
+    }
+}
     private Model readModel( String projectId, URL url, boolean strict )
         throws ProjectBuildingException
     {
         InputStreamReader reader = null;
         try
         {
-            reader = new InputStreamReader( url.openStream() );
-            return readModel( projectId, url.toExternalForm(), reader, strict );
+            //reader = new InputStreamReader( url.openStream() );
+            return readModel( projectId, url.toExternalForm(), url.openStream(), strict );
         }
         catch ( IOException e )
         {

