You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2021/08/07 04:42:39 UTC

[maven-invoker-plugin] branch master updated: [MINVOKER-281] java 8 as minimum (#57)

This is an automated email from the ASF dual-hosted git repository.

olamy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-invoker-plugin.git


The following commit(s) were added to refs/heads/master by this push:
     new 5c050e6  [MINVOKER-281] java 8 as minimum (#57)
5c050e6 is described below

commit 5c050e641e54f6b45ff429876f55945f07aface1
Author: Olivier Lamy <ol...@apache.org>
AuthorDate: Sat Aug 7 14:42:31 2021 +1000

    [MINVOKER-281] java 8 as minimum (#57)
    
    Signed-off-by: Olivier Lamy <ol...@apache.org>
---
 pom.xml                                            |  2 +-
 .../maven/plugins/invoker/AbstractInvokerMojo.java | 84 ++++++++--------------
 .../apache/maven/plugins/invoker/FileLogger.java   | 10 +--
 .../apache/maven/plugins/invoker/InstallMojo.java  | 21 +-----
 .../maven/plugins/invoker/MetadataUtils.java       |  4 +-
 .../org/apache/maven/plugins/invoker/Selector.java |  2 +-
 .../maven/plugins/invoker/SelectorUtils.java       | 22 ++----
 .../maven/plugins/invoker/InterpolationTest.java   |  4 +-
 .../maven/plugins/invoker/InvokerMojoTest.java     |  2 +-
 .../plugins/invoker/InvokerPropertiesTest.java     |  8 +--
 .../maven/plugins/invoker/SelectorUtilsTest.java   | 10 +--
 11 files changed, 56 insertions(+), 113 deletions(-)

diff --git a/pom.xml b/pom.xml
index 516d77e..4f06293 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,7 +65,7 @@ under the License.
   </distributionManagement>
 
   <properties>
-    <javaVersion>7</javaVersion>
+    <javaVersion>8</javaVersion>
     <mavenVersion>3.1.1</mavenVersion>
     <doxiaVersion>1.9.1</doxiaVersion>
     <doxiaSitetoolsVersion>1.9.2</doxiaSitetoolsVersion>
diff --git a/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java b/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java
index 7ee143e..44d4a7e 100644
--- a/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java
+++ b/src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java
@@ -22,7 +22,6 @@ package org.apache.maven.plugins.invoker;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Model;
-import org.apache.maven.model.Profile;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecution;
 import org.apache.maven.plugin.MojoExecutionException;
@@ -90,7 +89,6 @@ import java.nio.file.Paths;
 import java.text.DecimalFormat;
 import java.text.DecimalFormatSymbols;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
@@ -98,11 +96,9 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Properties;
 import java.util.Set;
 import java.util.StringTokenizer;
@@ -110,6 +106,7 @@ import java.util.TreeSet;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 import static org.apache.maven.shared.utils.logging.MessageUtils.buffer;
 
@@ -886,15 +883,10 @@ public abstract class AbstractInvokerMojo
 
     private List<BuildJob> getNonSetupJobs( List<BuildJob> buildJobs )
     {
-        List<BuildJob> result = new LinkedList<>();
-        for ( BuildJob buildJob : buildJobs )
-        {
-            if ( !buildJob.getType().equals( BuildJob.Type.SETUP ) )
-            {
-                result.add( buildJob );
-            }
-        }
-        return result;
+        return buildJobs.stream().
+                filter( buildJob -> !buildJob.getType().equals( BuildJob.Type.SETUP ) ).
+                collect( Collectors.toList() );
+
     }
 
     private void handleScriptRunnerWithScriptClassPath()
@@ -917,10 +909,7 @@ public abstract class AbstractInvokerMojo
         scriptRunner.setGlobalVariable( "localRepositoryPath", localRepositoryPath );
         if ( scriptVariables != null )
         {
-            for ( Entry<String, String> entry : scriptVariables.entrySet() )
-            {
-                scriptRunner.setGlobalVariable( entry.getKey(), entry.getValue() );
-            }
+            scriptVariables.forEach( ( key, value ) -> scriptRunner.setGlobalVariable( key, value ) );
         }
         scriptRunner.setClassPath( scriptClassPath );
     }
@@ -1057,14 +1046,10 @@ public abstract class AbstractInvokerMojo
                 collectProjects( projectsDir, parent, projectPaths, false );
             }
 
-            Collection<String> modulePaths = new LinkedHashSet<>();
+            Collection<String> modulePaths = new LinkedHashSet<>( model.getModules() );
 
-            modulePaths.addAll( model.getModules() );
+            model.getProfiles().forEach( profile -> modulePaths.addAll( profile.getModules() ) );
 
-            for ( Profile profile : model.getProfiles() )
-            {
-                modulePaths.addAll( profile.getModules() );
-            }
 
             for ( String modulePath : modulePaths )
             {
@@ -1399,21 +1384,18 @@ public abstract class AbstractInvokerMojo
                 ExecutorService executorService = Executors.newFixedThreadPool( runWithParallelThreads );
                 for ( final BuildJob job : buildJobs )
                 {
-                    executorService.execute( new Runnable()
+                    executorService.execute( () ->
                     {
-                        public void run()
+                        try
+                        {
+                            Path ancestorFolder = getAncestorFolder( projectsPath.resolve( job.getProject() ) );
+
+                            runBuild( projectsDir, job, mergedSettingsFile, javaHome, actualJreVersion,
+                                      globalInvokerProperties.get( ancestorFolder ) );
+                        }
+                        catch ( MojoExecutionException e )
                         {
-                            try
-                            {
-                                Path ancestorFolder = getAncestorFolder( projectsPath.resolve( job.getProject() ) );
-
-                                runBuild( projectsDir, job, mergedSettingsFile, javaHome, actualJreVersion,
-                                          globalInvokerProperties.get( ancestorFolder ) );
-                            }
-                            catch ( MojoExecutionException e )
-                            {
-                                throw new RuntimeException( e.getMessage(), e );
-                            }
+                            throw new RuntimeException( e.getMessage(), e );
                         }
                     } );
                 }
@@ -1623,13 +1605,7 @@ public abstract class AbstractInvokerMojo
         commandLine.createArg().setValue( "java.version" );
 
         final StringBuilder actualJreVersion = new StringBuilder();
-        StreamConsumer consumer = new StreamConsumer()
-        {
-            public void consumeLine( String line )
-            {
-                actualJreVersion.append( line );
-            }
-        };
+        StreamConsumer consumer = actualJreVersion::append;
         try
         {
             CommandLineUtils.executeCommandLine( commandLine, consumer, null );
@@ -1809,12 +1785,12 @@ public abstract class AbstractInvokerMojo
 
                 if ( !suppressSummaries )
                 {
-                    getLog().info( pad( buildJob ).warning( "SKIPPED" ) + " due to " + message.toString() );
+                    getLog().info( pad( buildJob ).warning( "SKIPPED" ) + " due to " + message );
                 }
 
                 // Abuse failureMessage, the field in the report which should contain the reason for skipping
                 // Consider skipCode + I18N
-                buildJob.setFailureMessage( "Skipped due to " + message.toString() );
+                buildJob.setFailureMessage( "Skipped due to " + message );
             }
         }
         catch ( RunFailureException e )
@@ -2038,7 +2014,7 @@ public abstract class AbstractInvokerMojo
         {
             Properties props = invokerProperties.getProperties();
             getLog().debug( "Using invoker properties:" );
-            for ( String key : new TreeSet<String>( props.stringPropertyNames() ) )
+            for ( String key : new TreeSet<>( props.stringPropertyNames() ) )
             {
                 String value = props.getProperty( key );
                 getLog().debug( "  " + key + " = " + value );
@@ -2427,7 +2403,7 @@ public abstract class AbstractInvokerMojo
         throws IOException
     {
         List<String> excludes =
-            ( pomExcludes != null ) ? new ArrayList<>( pomExcludes ) : new ArrayList<String>();
+            ( pomExcludes != null ) ? new ArrayList<>( pomExcludes ) : new ArrayList<>();
         if ( this.settingsFile != null )
         {
             String exclude = relativizePath( this.settingsFile, projectsDirectory.getCanonicalPath() );
@@ -2460,14 +2436,14 @@ public abstract class AbstractInvokerMojo
         return setupPoms;
     }
 
-    private static class OrdinalComparator implements Comparator
+    private static class OrdinalComparator implements Comparator<BuildJob>
     {
         private static final OrdinalComparator INSTANCE = new OrdinalComparator();
 
         @Override
-        public int compare( Object o1, Object o2 )
+        public int compare( BuildJob o1, BuildJob o2 )
         {
-            return Integer.compare( ( ( BuildJob ) o2 ).getOrdinal(), ( ( BuildJob ) o1 ).getOrdinal() );
+            return Integer.compare( o2.getOrdinal(), o1.getOrdinal() );
         }
     }
 
@@ -2489,7 +2465,7 @@ public abstract class AbstractInvokerMojo
             List<BuildJob> setupPoms = scanProjectsDirectory( setupIncludes, excludes, BuildJob.Type.SETUP );
             if ( getLog().isDebugEnabled() )
             {
-                getLog().debug( "Setup projects: " + Arrays.asList( setupPoms ) );
+                getLog().debug( "Setup projects: " + Collections.singletonList( setupPoms ) );
             }
 
             List<BuildJob> normalPoms = scanProjectsDirectory( pomIncludes, excludes, BuildJob.Type.NORMAL );
@@ -2563,11 +2539,11 @@ public abstract class AbstractInvokerMojo
         scanner.setFollowSymlinks( false );
         if ( includes != null )
         {
-            scanner.setIncludes( includes.toArray( new String[includes.size()] ) );
+            scanner.setIncludes( includes.toArray( new String[0] ) );
         }
         if ( excludes != null )
         {
-            scanner.setExcludes( excludes.toArray( new String[excludes.size()] ) );
+            scanner.setExcludes( excludes.toArray( new String[0] ) );
         }
         scanner.addDefaultExcludes();
         scanner.scan();
@@ -2603,7 +2579,7 @@ public abstract class AbstractInvokerMojo
             buildJob.setOrdinal( invokerProperties.getOrdinal() );
             projects.add( buildJob );
         }
-        Collections.sort( projects, OrdinalComparator.INSTANCE );
+        projects.sort( OrdinalComparator.INSTANCE );
         return projects;
     }
 
diff --git a/src/main/java/org/apache/maven/plugins/invoker/FileLogger.java b/src/main/java/org/apache/maven/plugins/invoker/FileLogger.java
index ef0ebaa..4a7d3cb 100644
--- a/src/main/java/org/apache/maven/plugins/invoker/FileLogger.java
+++ b/src/main/java/org/apache/maven/plugins/invoker/FileLogger.java
@@ -24,7 +24,6 @@ import java.io.IOException;
 
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.shared.invoker.InvocationOutputHandler;
-import org.apache.maven.shared.scriptinterpreter.FileLoggerMirrorHandler;
 
 /**
  *
@@ -56,14 +55,7 @@ class FileLogger
     FileLogger( File outputFile, final Log log )
         throws IOException
     {
-        super( outputFile, new FileLoggerMirrorHandler()
-        {
-            @Override
-            public void consumeOutput( String message )
-            {
-                log.info( message );
-            }
-        } );
+        super( outputFile, log::info );
     }
 
 }
diff --git a/src/main/java/org/apache/maven/plugins/invoker/InstallMojo.java b/src/main/java/org/apache/maven/plugins/invoker/InstallMojo.java
index 4a10ed4..c00e41b 100644
--- a/src/main/java/org/apache/maven/plugins/invoker/InstallMojo.java
+++ b/src/main/java/org/apache/maven/plugins/invoker/InstallMojo.java
@@ -22,14 +22,11 @@ package org.apache.maven.plugins.invoker;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
-import java.util.List;
 import java.util.Map;
 
 import org.apache.maven.artifact.Artifact;
@@ -49,7 +46,6 @@ import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.shared.artifact.filter.resolve.PatternExclusionsFilter;
 import org.apache.maven.shared.transfer.artifact.install.ArtifactInstaller;
-import org.apache.maven.shared.transfer.artifact.resolve.ArtifactResult;
 import org.apache.maven.shared.transfer.dependencies.DefaultDependableCoordinate;
 import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolver;
 import org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException;
@@ -625,9 +621,9 @@ public class InstallMojo
                         ProjectBuildingRequest projectBuildingRequest = repositoryManager
                                 .setLocalRepositoryBasedir( session.getProjectBuildingRequest(),
                                         localRepositoryPath );
-                        projectBuildingRequest.setRemoteRepositories( Arrays.asList( localRepository ) );
+                        projectBuildingRequest.setRemoteRepositories( Collections.singletonList( localRepository ) );
                         resolver.resolveDependencies( projectBuildingRequest, coordinate,
-                                new PatternExclusionsFilter( Collections.<String>emptyList() ) );
+                                new PatternExclusionsFilter( Collections.emptyList() ) );
                     }
                     finally
                     {
@@ -637,7 +633,7 @@ public class InstallMojo
                 else
                 {
                     resolver.resolveDependencies( projectBuildingRequest, coordinate,
-                            new PatternExclusionsFilter( Collections.<String>emptyList() ) );
+                            new PatternExclusionsFilter( Collections.emptyList() ) );
                 }
             }
             catch ( DependencyResolverException e )
@@ -647,15 +643,4 @@ public class InstallMojo
         }
     }
 
-    // FIXME could be simplify with using lambda... maybe in the next century... :P
-    private List<Artifact> toArtifactsList( Iterable<ArtifactResult> artifactResults )
-    {
-        List<Artifact> artifacts = new ArrayList<>( );
-        for ( ArtifactResult artifactResult : artifactResults )
-        {
-            artifacts.add( artifactResult.getArtifact() );
-        }
-        return artifacts;
-    }
-
 }
diff --git a/src/main/java/org/apache/maven/plugins/invoker/MetadataUtils.java b/src/main/java/org/apache/maven/plugins/invoker/MetadataUtils.java
index ad816e5..6588b97 100644
--- a/src/main/java/org/apache/maven/plugins/invoker/MetadataUtils.java
+++ b/src/main/java/org/apache/maven/plugins/invoker/MetadataUtils.java
@@ -82,7 +82,7 @@ class MetadataUtils
 
         File metadataFile = new File( file.getParentFile().getParentFile(), "maven-metadata-local.xml" );
 
-        Set<String> allVersions = new LinkedHashSet<String>();
+        Set<String> allVersions = new LinkedHashSet<>();
 
         Xpp3Dom metadata = readMetadata( metadataFile );
 
@@ -150,7 +150,7 @@ class MetadataUtils
         }
         catch ( XmlPullParserException e )
         {
-            throw (IOException) new IOException( e.getMessage() ).initCause( e );
+            throw new IOException( e.getMessage(), e );
         }
     }
 
diff --git a/src/main/java/org/apache/maven/plugins/invoker/Selector.java b/src/main/java/org/apache/maven/plugins/invoker/Selector.java
index 4fde5df..6f6cfba 100644
--- a/src/main/java/org/apache/maven/plugins/invoker/Selector.java
+++ b/src/main/java/org/apache/maven/plugins/invoker/Selector.java
@@ -111,7 +111,7 @@ class Selector
             selection |= SELECTOR_MAVENVERSION;
         }
 
-        if ( !SelectorUtils.isJreVersion( invokerProperties.getJreVersion(), actualJavaVersion.toString() ) )
+        if ( !SelectorUtils.isJreVersion( invokerProperties.getJreVersion(), actualJavaVersion ) )
         {
             selection |= SELECTOR_JREVERSION;
         }
diff --git a/src/main/java/org/apache/maven/plugins/invoker/SelectorUtils.java b/src/main/java/org/apache/maven/plugins/invoker/SelectorUtils.java
index db509e0..a144937 100644
--- a/src/main/java/org/apache/maven/plugins/invoker/SelectorUtils.java
+++ b/src/main/java/org/apache/maven/plugins/invoker/SelectorUtils.java
@@ -20,15 +20,16 @@ package org.apache.maven.plugins.invoker;
  */
 
 import java.io.File;
-import java.io.FilenameFilter;
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
+import java.util.stream.Collectors;
 
 import org.apache.maven.plugins.invoker.AbstractInvokerMojo.ToolchainPrivateManager;
 import org.apache.maven.project.MavenProject;
@@ -121,13 +122,7 @@ class SelectorUtils
     static String getMavenVersion( File mavenHome )
     {
         File mavenLib = new File( mavenHome, "lib" );
-        File[] jarFiles = mavenLib.listFiles( new FilenameFilter()
-        {
-            public boolean accept( File dir, String name )
-            {
-                return name.endsWith( ".jar" );
-            }
-        } );
+        File[] jarFiles = mavenLib.listFiles( ( dir, name ) -> name.endsWith( ".jar" ) );
 
         for ( File file : jarFiles )
         {
@@ -192,8 +187,8 @@ class SelectorUtils
 
     static boolean isJreVersion( String jreSpec, String actualJreVersion )
     {
-        List<String> includes = new ArrayList<String>();
-        List<String> excludes = new ArrayList<String>();
+        List<String> includes = new ArrayList<>();
+        List<String> excludes = new ArrayList<>();
         parseList( jreSpec, includes, excludes );
 
         List<Integer> jreVersion = parseVersion( actualJreVersion );
@@ -249,12 +244,7 @@ class SelectorUtils
 
         String[] tokens = StringUtils.split( version, "." );
 
-        List<Integer> numbers = new ArrayList<Integer>();
-
-        for ( String token : tokens )
-        {
-            numbers.add( Integer.valueOf( token ) );
-        }
+        List<Integer> numbers = Arrays.stream( tokens ).map( Integer::valueOf ).collect( Collectors.toList() );
 
         return numbers;
     }
diff --git a/src/test/java/org/apache/maven/plugins/invoker/InterpolationTest.java b/src/test/java/org/apache/maven/plugins/invoker/InterpolationTest.java
index bf11628..cd75a75 100644
--- a/src/test/java/org/apache/maven/plugins/invoker/InterpolationTest.java
+++ b/src/test/java/org/apache/maven/plugins/invoker/InterpolationTest.java
@@ -21,7 +21,7 @@ package org.apache.maven.plugins.invoker;
 
 import java.io.File;
 import java.io.Reader;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -114,7 +114,7 @@ public class InterpolationTest
     {
 
         InvokerMojo invokerMojo = new InvokerMojo();
-        setVariableValueToObject( invokerMojo, "profiles", Arrays.asList( "zloug" ) );
+        setVariableValueToObject( invokerMojo, "profiles", Collections.singletonList( "zloug" ) );
         setVariableValueToObject( invokerMojo, "settings", new Settings() );
         String dirPath = getBasedir() + File.separatorChar + "src" + File.separatorChar + "test" + File.separatorChar
             + "resources" + File.separatorChar + "unit" + File.separatorChar + "profiles-from-file";
diff --git a/src/test/java/org/apache/maven/plugins/invoker/InvokerMojoTest.java b/src/test/java/org/apache/maven/plugins/invoker/InvokerMojoTest.java
index f3dc12f..1c22131 100644
--- a/src/test/java/org/apache/maven/plugins/invoker/InvokerMojoTest.java
+++ b/src/test/java/org/apache/maven/plugins/invoker/InvokerMojoTest.java
@@ -89,7 +89,7 @@ public class InvokerMojoTest extends AbstractMojoTestCase
 
     public void testAlreadyCloned()
     {
-        assertFalse( AbstractInvokerMojo.alreadyCloned( "dir", Collections.<String>emptyList() ) );
+        assertFalse( AbstractInvokerMojo.alreadyCloned( "dir", Collections.emptyList() ) );
         assertTrue( AbstractInvokerMojo.alreadyCloned( "dir", Collections.singletonList( "dir" ) ) );
         assertTrue( AbstractInvokerMojo.alreadyCloned( "dir" + File.separator + "sub",
                 Collections.singletonList( "dir" ) ) );
diff --git a/src/test/java/org/apache/maven/plugins/invoker/InvokerPropertiesTest.java b/src/test/java/org/apache/maven/plugins/invoker/InvokerPropertiesTest.java
index a929032..df72222 100644
--- a/src/test/java/org/apache/maven/plugins/invoker/InvokerPropertiesTest.java
+++ b/src/test/java/org/apache/maven/plugins/invoker/InvokerPropertiesTest.java
@@ -132,13 +132,13 @@ public class InvokerPropertiesTest
 
         props.setProperty( "invoker.goals", "   " );
         facade.configureInvocation( request, 0 );
-        verify( request ).setGoals( eq( Collections.<String>emptyList() ) );
+        verify( request ).setGoals( eq( Collections.emptyList() ) );
         verifyNoMoreInteractions( request );
         clearInvocations( request );
 
         props.setProperty( "invoker.goals", "" );
         facade.configureInvocation( request, 0 );
-        verify( request ).setGoals( eq( Collections.<String>emptyList() ) );
+        verify( request ).setGoals( eq( Collections.emptyList() ) );
         verifyNoMoreInteractions( request );
         clearInvocations( request );
 
@@ -162,13 +162,13 @@ public class InvokerPropertiesTest
 
         props.setProperty( "invoker.profiles", "   " );
         facade.configureInvocation( request, 0 );
-        verify( request ).setProfiles( eq( Collections.<String>emptyList() ) );
+        verify( request ).setProfiles( eq( Collections.emptyList() ) );
         verifyNoMoreInteractions( request );
         clearInvocations( request );
 
         props.setProperty( "invoker.profiles", "" );
         facade.configureInvocation( request, 0 );
-        verify( request ).setProfiles( eq( Collections.<String>emptyList() ) );
+        verify( request ).setProfiles( eq( Collections.emptyList() ) );
         verifyNoMoreInteractions( request );
         clearInvocations( request );
 
diff --git a/src/test/java/org/apache/maven/plugins/invoker/SelectorUtilsTest.java b/src/test/java/org/apache/maven/plugins/invoker/SelectorUtilsTest.java
index 95fb116..2a4e823 100644
--- a/src/test/java/org/apache/maven/plugins/invoker/SelectorUtilsTest.java
+++ b/src/test/java/org/apache/maven/plugins/invoker/SelectorUtilsTest.java
@@ -47,14 +47,14 @@ public class SelectorUtilsTest
     @Test
     public void testParseList()
     {
-        List<String> includes = new ArrayList<String>();
-        List<String> excludes = new ArrayList<String>();
+        List<String> includes = new ArrayList<>();
+        List<String> excludes = new ArrayList<>();
 
         SelectorUtils.parseList( null, includes, excludes );
 
         SelectorUtils.parseList( " 1.5, !1.4, 1.6+ ", includes, excludes );
         assertEquals( Arrays.asList( "1.5", "1.6+" ), includes );
-        assertEquals( Arrays.asList( "1.4" ), excludes );
+        assertEquals( Collections.singletonList( "1.4" ), excludes );
     }
 
     @Test
@@ -74,8 +74,8 @@ public class SelectorUtilsTest
         assertTrue( SelectorUtils.compareVersions( Arrays.asList( 1, 5 ), Arrays.asList( 1, 6 ) ) < 0 );
         assertTrue( SelectorUtils.compareVersions( Arrays.asList( 1, 6 ), Arrays.asList( 1, 5 ) ) > 0 );
 
-        assertTrue( SelectorUtils.compareVersions( Arrays.asList( 1 ), Arrays.asList( 1, 6 ) ) < 0 );
-        assertTrue( SelectorUtils.compareVersions( Arrays.asList( 1, 6 ), Arrays.asList( 1 ) ) > 0 );
+        assertTrue( SelectorUtils.compareVersions( Collections.singletonList( 1 ), Arrays.asList( 1, 6 ) ) < 0 );
+        assertTrue( SelectorUtils.compareVersions( Arrays.asList( 1, 6 ), Collections.singletonList( 1 ) ) > 0 );
     }
 
     @Test