diff --git a/src/main/java/org/apache/maven/shared/utils/cli/CommandLineUtils.java b/src/main/java/org/apache/maven/shared/utils/cli/CommandLineUtils.java
index c39ec69..6e1bc81 100644
--- a/src/main/java/org/apache/maven/shared/utils/cli/CommandLineUtils.java
+++ b/src/main/java/org/apache/maven/shared/utils/cli/CommandLineUtils.java
@@ -52,6 +52,7 @@
         private static final String LS = System.getProperty( "line.separator" );
 
         /** {@inheritDoc} */
+        @Override
         public void consumeLine( String line )
         {
             string.append( line ).append( LS );
diff --git a/src/main/java/org/apache/maven/shared/utils/cli/DefaultConsumer.java b/src/main/java/org/apache/maven/shared/utils/cli/DefaultConsumer.java
index 040b8ad..5104877 100644
--- a/src/main/java/org/apache/maven/shared/utils/cli/DefaultConsumer.java
+++ b/src/main/java/org/apache/maven/shared/utils/cli/DefaultConsumer.java
@@ -19,6 +19,8 @@
  * under the License.
  */
 
+import java.io.IOException;
+
 /**
  * @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
  * @version $Id$
@@ -26,9 +28,18 @@
 public class DefaultConsumer
     implements StreamConsumer
 {
-    /** {@inheritDoc} */
-    public void consumeLine( String line )
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void consumeLine( String line ) throws IOException
     {
         System.out.println( line );
+        if ( System.out.checkError() )
+        {
+            throw new IOException( String.format( "Failure writing line '%s' to stdout.", line ) );
+        }
     }
+
 }
diff --git a/src/main/java/org/apache/maven/shared/utils/cli/StreamConsumer.java b/src/main/java/org/apache/maven/shared/utils/cli/StreamConsumer.java
index dc6802b..0cde961 100644
--- a/src/main/java/org/apache/maven/shared/utils/cli/StreamConsumer.java
+++ b/src/main/java/org/apache/maven/shared/utils/cli/StreamConsumer.java
@@ -19,6 +19,8 @@
  * under the License.
  */
 
+import java.io.IOException;
+
 /**
  * Works in concert with the StreamPumper class to
  * allow implementations to gain access to the lines being
@@ -35,6 +37,7 @@
     /**
      * Called when the StreamPumper pumps a line from the Stream.
      * @param line The line to be consumed.
+     * @throws IOException if consuming {@code line} fails.
      */
-    void consumeLine( String line );
+    void consumeLine( String line ) throws IOException;
 }
diff --git a/src/main/java/org/apache/maven/shared/utils/cli/StreamPumper.java b/src/main/java/org/apache/maven/shared/utils/cli/StreamPumper.java
index 7fa3ae4..411d55e 100644
--- a/src/main/java/org/apache/maven/shared/utils/cli/StreamPumper.java
+++ b/src/main/java/org/apache/maven/shared/utils/cli/StreamPumper.java
@@ -145,7 +145,7 @@
         return exception;
     }
 
-    private void consumeLine( String line )
+    private void consumeLine( String line ) throws IOException
     {
         if ( consumer != null && !isDisabled() )
         {
diff --git a/src/main/java/org/apache/maven/shared/utils/cli/WriterStreamConsumer.java b/src/main/java/org/apache/maven/shared/utils/cli/WriterStreamConsumer.java
index b95a81f..f8ce0d8 100644
--- a/src/main/java/org/apache/maven/shared/utils/cli/WriterStreamConsumer.java
+++ b/src/main/java/org/apache/maven/shared/utils/cli/WriterStreamConsumer.java
@@ -19,7 +19,8 @@
  * under the License.
  */
 
-import java.io.PrintWriter;
+import java.io.BufferedWriter;
+import java.io.IOException;
 import java.io.Writer;
 
 /**
@@ -30,22 +31,26 @@
     implements StreamConsumer
 {
 
-    private final PrintWriter writer;
+    private final BufferedWriter writer;
 
     /**
      * @param writer {@link Writer}
      */
     public WriterStreamConsumer( Writer writer )
     {
-        this.writer = new PrintWriter( writer );
+        super();
+        this.writer = new BufferedWriter( writer );
     }
 
-    /** {@inheritDoc}
+    /**
+     * {@inheritDoc}
      */
-    public void consumeLine( String line )
+    @Override
+    public void consumeLine( String line ) throws IOException
     {
-        writer.println( line );
-
-        writer.flush();
+        this.writer.append( line );
+        this.writer.newLine();
+        this.writer.flush();
     }
+
 }
diff --git a/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaTool.java b/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaTool.java
index 09b33f0..2282680 100644
--- a/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaTool.java
+++ b/src/main/java/org/apache/maven/shared/utils/cli/javatool/AbstractJavaTool.java
@@ -199,6 +199,7 @@
                 /**
                  * {@inheritDoc}
                  */
+                @Override
                 public void consumeLine( final String line )
                 {
                     getLogger().warn( line );
@@ -226,6 +227,7 @@
                 /**
                  * {@inheritDoc}
                  */
+                @Override
                 public void consumeLine( final String line )
                 {
                     getLogger().info( line );
