Pass https.protocols to surefire
Use source/target 1.7 for Java 9 and above
diff --git a/pom.xml b/pom.xml
index c9dc185..7e5138e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -148,5 +148,29 @@
         </plugins>
       </build>
     </profile>
+    <profile>
+      <activation>
+        <property>
+          <name>https.protocols</name>
+        </property>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+              <systemProperties combine.children="append">
+                <property>
+                  <name>https.protocols</name>
+                  <value>${https.protocols}</value>
+                </property>
+              </systemProperties>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+    
   </profiles>
 </project>
diff --git a/src/test/java/org/apache/maven/shared/invoker/DefaultInvokerTest.java b/src/test/java/org/apache/maven/shared/invoker/DefaultInvokerTest.java
index deab040..874f51d 100644
--- a/src/test/java/org/apache/maven/shared/invoker/DefaultInvokerTest.java
+++ b/src/test/java/org/apache/maven/shared/invoker/DefaultInvokerTest.java
@@ -48,14 +48,7 @@
         request.setBaseDirectory( basedir );
         request.setDebug( true );
         request.setGoals( Arrays.asList( "clean", "package" ) );
-
-        if ( !System.getProperty( "java.version" ).startsWith( "1." ) )
-        {
-            Properties properties = new Properties();
-            properties.put( "maven.compiler.source", "1.6" );
-            properties.put( "maven.compiler.target", "1.6" );
-            request.setProperties( properties );
-        }
+        request.setProperties( getProperties() );
 
         InvocationResult result = invoker.execute( request );
 
@@ -74,14 +67,8 @@
         request.setBaseDirectory( basedir );
         request.setDebug( true );
         request.setGoals( Arrays.asList( "clean", "package" ) );
+        request.setProperties( getProperties() );
 
-        if ( !System.getProperty( "java.version" ).startsWith( "1." ) )
-        {
-            Properties properties = new Properties();
-            properties.put( "maven.compiler.source", "1.6" );
-            properties.put( "maven.compiler.target", "1.6" );
-            request.setProperties( properties );
-        }
         InvocationResult result = invoker.execute( request );
 
         assertEquals( 1, result.getExitCode() );
@@ -100,14 +87,7 @@
         request.setDebug( true );
         request.setGoals( Arrays.asList( "clean", "package" ) );
         request.setTimeoutInSeconds( 4 );
-
-        if ( !System.getProperty( "java.version" ).startsWith( "1." ) )
-        {
-            Properties properties = new Properties();
-            properties.put( "maven.compiler.source", "1.6" );
-            properties.put( "maven.compiler.target", "1.6" );
-            request.setProperties( properties );
-        }
+        request.setProperties( getProperties() );
 
         InvocationResult result = invoker.execute( request );
 
@@ -134,7 +114,8 @@
         request.setPomFileName( "pom with spaces.xml" );
         request.setDebug( true );
         request.setGoals( Arrays.asList( "clean" ) );
-
+        request.setProperties( getProperties() );
+        
         InvocationResult result = invoker.execute( request );
 
         assertEquals( 0, result.getExitCode() );
@@ -155,6 +136,7 @@
         request.setPomFileName( "pom with spaces & special char.xml" );
         request.setDebug( true );
         request.setGoals( Arrays.asList( "clean" ) );
+        request.setProperties( getProperties() );
 
         InvocationResult result = invoker.execute( request );
 
@@ -176,6 +158,7 @@
         request.setUserSettingsFile( new File( basedir, "settings with spaces.xml" ) );
         request.setDebug( true );
         request.setGoals( Arrays.asList( "validate" ) );
+        request.setProperties( getProperties() );
 
         InvocationResult result = invoker.execute( request );
 
@@ -197,6 +180,7 @@
         request.setLocalRepositoryDirectory( new File( basedir, "repo with spaces" ) );
         request.setDebug( true );
         request.setGoals( Arrays.asList( "validate" ) );
+        request.setProperties( getProperties() );
 
         InvocationResult result = invoker.execute( request );
 
@@ -216,7 +200,7 @@
         InvocationRequest request = new DefaultInvocationRequest();
         request.setBaseDirectory( basedir );
 
-        Properties props = new Properties();
+        Properties props = getProperties();
         props.setProperty( "key", "value with spaces" );
         props.setProperty( "key with spaces", "value" );
         request.setProperties( props );
@@ -303,5 +287,21 @@
 
         System.out.println( "Starting: " + element.getMethodName() );
     }
-
+    
+    private Properties getProperties()
+    {
+        Properties properties = new Properties();
+        if ( !System.getProperty( "java.version" ).startsWith( "1." ) )
+        {
+            properties.put( "maven.compiler.source", "1.7" );
+            properties.put( "maven.compiler.target", "1.7" );
+        }
+        
+        String httpProtocols = System.getProperty( "https.protocols" );
+        if ( httpProtocols != null )
+        {
+            properties.put( "https.protocols", httpProtocols );
+        }
+        return properties;
+    }
 }