diff --git a/src/test/java/org/apache/maven/plugins/source/stubs/Project001Stub.java b/src/test/java/org/apache/maven/plugins/source/stubs/Project001Stub.java
index 10326f2..a4b8d1d 100644
--- a/src/test/java/org/apache/maven/plugins/source/stubs/Project001Stub.java
+++ b/src/test/java/org/apache/maven/plugins/source/stubs/Project001Stub.java
@@ -1,12 +1,18 @@
 package org.apache.maven.plugins.source.stubs;
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.ReaderFactory;
+import org.codehaus.plexus.util.xml.XmlStreamReader;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -27,9 +33,6 @@
  * under the License.
  */
 
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
-import org.codehaus.plexus.util.ReaderFactory;
-
 /**
  * @author <a href="mailto:oching@exist.com">Maria Odea Ching</a>
  */
@@ -44,13 +47,11 @@
 
     public Project001Stub()
     {
-        MavenXpp3Reader pomReader = new MavenXpp3Reader();
         Model model;
 
         try
         {
-            model = pomReader.read(
-                ReaderFactory.newXmlReader( new File( getBasedir(), "target/test-classes/unit/project-001/pom.xml" ) ) );
+            model = readModelFromFile( new File( getBasedir(), "target/test-classes/unit/project-001/pom.xml" ) );
             setModel( model );
 
             setGroupId( model.getGroupId() );
@@ -74,8 +75,10 @@
             testCompileSourceRoots.add( basedir + "/target/test-classes/unit/project-001/src/test/java" );
             setTestCompileSourceRoots( testCompileSourceRoots );
 
-            setResources( model.getBuild().getResources() );
-            setTestResources( model.getBuild().getTestResources() );
+            setResources( model.getBuild()
+                               .getResources() );
+            setTestResources( model.getBuild()
+                                   .getTestResources() );
 
             SourcePluginArtifactStub artifact =
                 new SourcePluginArtifactStub( getGroupId(), getArtifactId(), getVersion(), getPackaging(), null );
@@ -120,4 +123,20 @@
     {
         this.testResources = testResources;
     }
+
+    static Model readModelFromFile(File file)
+        throws IOException, XmlPullParserException
+    {
+        MavenXpp3Reader pomReader = new MavenXpp3Reader();
+        XmlStreamReader reader = null;
+        try
+        {
+            reader = ReaderFactory.newXmlReader( file );
+            return pomReader.read( reader );
+        } finally {
+            IOUtil.close( reader );
+        }
+
+
+    }
 }
diff --git a/src/test/java/org/apache/maven/plugins/source/stubs/Project003Stub.java b/src/test/java/org/apache/maven/plugins/source/stubs/Project003Stub.java
index 1fca465..518c11b 100644
--- a/src/test/java/org/apache/maven/plugins/source/stubs/Project003Stub.java
+++ b/src/test/java/org/apache/maven/plugins/source/stubs/Project003Stub.java
@@ -30,6 +30,8 @@
 import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 import org.codehaus.plexus.util.ReaderFactory;
 
+import static org.apache.maven.plugins.source.stubs.Project001Stub.readModelFromFile;
+
 /**
  * @author <a href="mailto:oching@exist.com">Maria Odea Ching</a>
  */
@@ -44,13 +46,11 @@
 
     public Project003Stub()
     {
-        MavenXpp3Reader pomReader = new MavenXpp3Reader();
         Model model;
 
         try
         {
-            model = pomReader.read(
-                ReaderFactory.newXmlReader( new File( getBasedir(), "target/test-classes/unit/project-003/pom.xml" ) ) );
+            model = readModelFromFile( new File( getBasedir(), "target/test-classes/unit/project-003/pom.xml" ) );
             setModel( model );
 
             setGroupId( model.getGroupId() );
diff --git a/src/test/java/org/apache/maven/plugins/source/stubs/Project005Stub.java b/src/test/java/org/apache/maven/plugins/source/stubs/Project005Stub.java
index 06b22a4..eddabc3 100644
--- a/src/test/java/org/apache/maven/plugins/source/stubs/Project005Stub.java
+++ b/src/test/java/org/apache/maven/plugins/source/stubs/Project005Stub.java
@@ -29,6 +29,8 @@
 import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 import org.codehaus.plexus.util.ReaderFactory;
 
+import static org.apache.maven.plugins.source.stubs.Project001Stub.readModelFromFile;
+
 /**
  * @author <a href="mailto:oching@exist.com">Maria Odea Ching</a>
  */
@@ -43,13 +45,10 @@
 
     public Project005Stub()
     {
-        MavenXpp3Reader pomReader = new MavenXpp3Reader();
         Model model;
-
         try
         {
-            model = pomReader.read(
-                ReaderFactory.newXmlReader( new File( getBasedir(), "target/test-classes/unit/project-005/pom.xml" ) ) );
+            model = readModelFromFile( new File( getBasedir(), "target/test-classes/unit/project-005/pom.xml" ) );
             setModel( model );
 
             setGroupId( model.getGroupId() );
diff --git a/src/test/java/org/apache/maven/plugins/source/stubs/Project007Stub.java b/src/test/java/org/apache/maven/plugins/source/stubs/Project007Stub.java
index ef6ba9a..8419957 100644
--- a/src/test/java/org/apache/maven/plugins/source/stubs/Project007Stub.java
+++ b/src/test/java/org/apache/maven/plugins/source/stubs/Project007Stub.java
@@ -30,6 +30,8 @@
 import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 import org.codehaus.plexus.util.ReaderFactory;
 
+import static org.apache.maven.plugins.source.stubs.Project001Stub.readModelFromFile;
+
 /**
  * @author <a href="mailto:oching@exist.com">Maria Odea Ching</a>
  */
@@ -44,13 +46,10 @@
 
     public Project007Stub()
     {
-        MavenXpp3Reader pomReader = new MavenXpp3Reader();
         Model model;
-
         try
         {
-            model = pomReader.read(
-                ReaderFactory.newXmlReader( new File( getBasedir(), "target/test-classes/unit/project-007/pom.xml" ) ) );
+            model = readModelFromFile( new File( getBasedir(), "target/test-classes/unit/project-007/pom.xml" ) );
             setModel( model );
 
             setGroupId( model.getGroupId() );
diff --git a/src/test/java/org/apache/maven/plugins/source/stubs/Project009Stub.java b/src/test/java/org/apache/maven/plugins/source/stubs/Project009Stub.java
index 66379d8..efa4402 100644
--- a/src/test/java/org/apache/maven/plugins/source/stubs/Project009Stub.java
+++ b/src/test/java/org/apache/maven/plugins/source/stubs/Project009Stub.java
@@ -29,6 +29,8 @@
 import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 import org.codehaus.plexus.util.ReaderFactory;
 
+import static org.apache.maven.plugins.source.stubs.Project001Stub.readModelFromFile;
+
 /**
  * @author Dennis Lundberg
  */
@@ -43,13 +45,12 @@
 
     public Project009Stub()
     {
-        MavenXpp3Reader pomReader = new MavenXpp3Reader();
         Model model;
 
         try
         {
             final File pomFile = new File( getBasedir(), "target/test-classes/unit/project-009/pom.xml" );
-            model = pomReader.read( ReaderFactory.newXmlReader( pomFile ) );
+            model = readModelFromFile( pomFile );
             setModel( model );
             setFile( pomFile );
 
diff --git a/src/test/java/org/apache/maven/plugins/source/stubs/Project010Stub.java b/src/test/java/org/apache/maven/plugins/source/stubs/Project010Stub.java
index 77a7502..16c50ec 100644
--- a/src/test/java/org/apache/maven/plugins/source/stubs/Project010Stub.java
+++ b/src/test/java/org/apache/maven/plugins/source/stubs/Project010Stub.java
@@ -29,6 +29,8 @@
 import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 import org.codehaus.plexus.util.ReaderFactory;
 
+import static org.apache.maven.plugins.source.stubs.Project001Stub.readModelFromFile;
+
 public class Project010Stub
     extends MavenProjectStub
 {
@@ -40,13 +42,11 @@
 
     public Project010Stub()
     {
-        MavenXpp3Reader pomReader = new MavenXpp3Reader();
         Model model;
 
         try
         {
-            model = pomReader.read(
-                ReaderFactory.newXmlReader( new File( getBasedir(), "target/test-classes/unit/project-010/pom.xml" ) ) );
+            model = readModelFromFile( new File( getBasedir(), "target/test-classes/unit/project-010/pom.xml" ) );
             setModel( model );
 
             setFile(new File( getBasedir(), "target/test-classes/unit/project-010/pom.xml" ));
