diff --git a/pom.xml b/pom.xml
index efad18f9..164776b0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -96,6 +96,21 @@ limitations under the License.
+
+ maven-compiler-plugin
+
+
+ default-compile
+
+ compile
+
+
+ 1.8
+ 1.8
+
+
+
+
org.apache.maven.plugins
maven-scm-publish-plugin
@@ -134,7 +149,79 @@ limitations under the License.
+
+ maven-jar-plugin
+
+
+
+ true
+
+
+
+
+
+
+ jdk9+
+
+ [9,)
+
+
+
+
+
+ maven-compiler-plugin
+
+
+ compile-java-9
+
+ compile
+
+
+ 9
+
+ ${project.basedir}/src/main/java9
+
+ true
+
+
+
+
+
+
+
+
+
+ jdk10+
+
+ [10,)
+
+
+
+
+
+ maven-compiler-plugin
+
+
+ compile-java-10
+
+ compile
+
+
+ 10
+
+ ${project.basedir}/src/main/java10
+
+ true
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/org/codehaus/plexus/util/BaseIOUtil.java b/src/main/java/org/codehaus/plexus/util/BaseIOUtil.java
new file mode 100644
index 00000000..ac2ade02
--- /dev/null
+++ b/src/main/java/org/codehaus/plexus/util/BaseIOUtil.java
@@ -0,0 +1,27 @@
+package org.codehaus.plexus.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+
+/**
+ * Implementation specific to Java SE 8 version.
+ */
+abstract class BaseIOUtil
+{
+ private static final int DEFAULT_BUFFER_SIZE = 1024 * 16;
+
+ static void copy( final InputStream input, final OutputStream output )
+ throws IOException
+ {
+ IOUtil.copy( input, output, DEFAULT_BUFFER_SIZE );
+ }
+
+ static void copy( final Reader input, final Writer output )
+ throws IOException
+ {
+ IOUtil.copy( input, output, DEFAULT_BUFFER_SIZE );
+ }
+}
diff --git a/src/main/java/org/codehaus/plexus/util/IOUtil.java b/src/main/java/org/codehaus/plexus/util/IOUtil.java
index 3fab8411..b431a8d9 100644
--- a/src/main/java/org/codehaus/plexus/util/IOUtil.java
+++ b/src/main/java/org/codehaus/plexus/util/IOUtil.java
@@ -132,7 +132,7 @@
* method variants to specify buffer size and encoding, each row may correspond to up to 4 methods.
*/
-public final class IOUtil
+public final class IOUtil extends BaseIOUtil
{
private static final int DEFAULT_BUFFER_SIZE = 1024 * 16;
@@ -156,7 +156,7 @@ private IOUtil()
public static void copy( final InputStream input, final OutputStream output )
throws IOException
{
- copy( input, output, DEFAULT_BUFFER_SIZE );
+ BaseIOUtil.copy( input, output );
}
/**
@@ -186,7 +186,7 @@ public static void copy( final InputStream input, final OutputStream output, fin
public static void copy( final Reader input, final Writer output )
throws IOException
{
- copy( input, output, DEFAULT_BUFFER_SIZE );
+ BaseIOUtil.copy( input, output );
}
/**
diff --git a/src/main/java10/org/codehaus/plexus/util/BaseIOUtil.java b/src/main/java10/org/codehaus/plexus/util/BaseIOUtil.java
new file mode 100644
index 00000000..fc792be3
--- /dev/null
+++ b/src/main/java10/org/codehaus/plexus/util/BaseIOUtil.java
@@ -0,0 +1,25 @@
+package org.codehaus.plexus.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+
+/**
+ * Implementation specific to Java SE 10 version.
+ */
+abstract class BaseIOUtil
+{
+ static void copy( final InputStream input, final OutputStream output )
+ throws IOException
+ {
+ input.transferTo( output );
+ }
+
+ static void copy( final Reader input, final Writer output )
+ throws IOException
+ {
+ input.transferTo( output );
+ }
+}
diff --git a/src/main/java9/org/codehaus/plexus/util/BaseIOUtil.java b/src/main/java9/org/codehaus/plexus/util/BaseIOUtil.java
new file mode 100644
index 00000000..7e0826c4
--- /dev/null
+++ b/src/main/java9/org/codehaus/plexus/util/BaseIOUtil.java
@@ -0,0 +1,27 @@
+package org.codehaus.plexus.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+
+/**
+ * Implementation specific to Java SE 9 version.
+ */
+abstract class BaseIOUtil
+{
+ private static final int DEFAULT_BUFFER_SIZE = 1024 * 16;
+
+ static void copy( final InputStream input, final OutputStream output )
+ throws IOException
+ {
+ input.transferTo( output );
+ }
+
+ static void copy( final Reader input, final Writer output )
+ throws IOException
+ {
+ IOUtil.copy( input, output, DEFAULT_BUFFER_SIZE );
+ }
+}