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

rfscholte pushed a commit to branch MJLINK-36
in repository https://gitbox.apache.org/repos/asf/maven-jlink-plugin.git

commit c00ec1d4ada4084aad57de249552884aa970c5c1
Author: Benjamin Marwell <[email protected]>
AuthorDate: Mon Nov 16 12:04:51 2020 +0100

    skip unnecessary jlinkArgsFile.
---
 .../MJLINK-40_includeLocales/verify.groovy         | 16 ++--
 .../maven/plugins/jlink/AbstractJLinkExecutor.java |  2 +-
 .../apache/maven/plugins/jlink/JLinkExecutor.java  |  9 ++-
 .../org/apache/maven/plugins/jlink/JLinkMojo.java  | 93 +++++++++-------------
 .../apache/maven/plugins/jlink/JLinkExecutor.java  | 49 +-----------
 5 files changed, 52 insertions(+), 117 deletions(-)

diff --git a/src/it/projects/MJLINK-40_includeLocales/verify.groovy 
b/src/it/projects/MJLINK-40_includeLocales/verify.groovy
index 1887547..c32508b 100644
--- a/src/it/projects/MJLINK-40_includeLocales/verify.groovy
+++ b/src/it/projects/MJLINK-40_includeLocales/verify.groovy
@@ -26,21 +26,15 @@ boolean result = false;
 
 try
 {
-    File target = new File( basedir, "target" );
-    if ( !target.exists() || !target.isDirectory() )
+    File buildLog = new File( basedir, "build.log" );
+    if ( !buildLog.exists() || buildLog.isDirectory() )
     {
-        System.err.println( "target file is missing or not a directory." );
-        return false;
-    }
-    File jlinkArgs = new File( target, "jlinkArgs" );
-    if ( !jlinkArgs.exists() || jlinkArgs.isDirectory() )
-    {
-        System.err.println( "jlinkArgs file is missing or is a directory." );
+        System.err.println( "build.log file is missing or is a directory." );
         return false;
     }
 
-    def line = jlinkArgs.eachLine { line ->
-        if (line.equals('en,ja,de,*-IN'))
+    def line = buildLog.eachLine { line ->
+        if (line.contains('--include-locales, en,ja,de,*-IN'))
         {
             result = true;
         }
diff --git 
a/src/main/java/org/apache/maven/plugins/jlink/AbstractJLinkExecutor.java 
b/src/main/java/org/apache/maven/plugins/jlink/AbstractJLinkExecutor.java
index 16864b6..f6a6799 100644
--- a/src/main/java/org/apache/maven/plugins/jlink/AbstractJLinkExecutor.java
+++ b/src/main/java/org/apache/maven/plugins/jlink/AbstractJLinkExecutor.java
@@ -58,7 +58,7 @@ abstract class AbstractJLinkExecutor
 
     public abstract Optional<File> getJmodsFolder( /* nullable */ File 
sourceJdkModules );
 
-    public abstract int executeJlink( File argsFile ) throws 
MojoExecutionException;
+    public abstract int executeJlink( List<String> jlinkArgs ) throws 
MojoExecutionException;
 
     public void addAllModules( Collection<String> modulesToAdd )
     {
diff --git a/src/main/java/org/apache/maven/plugins/jlink/JLinkExecutor.java 
b/src/main/java/org/apache/maven/plugins/jlink/JLinkExecutor.java
index f025458..a9299c3 100644
--- a/src/main/java/org/apache/maven/plugins/jlink/JLinkExecutor.java
+++ b/src/main/java/org/apache/maven/plugins/jlink/JLinkExecutor.java
@@ -27,6 +27,7 @@ import org.codehaus.plexus.util.cli.Commandline;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.List;
 import java.util.Optional;
 
 /**
@@ -76,20 +77,20 @@ class JLinkExecutor extends AbstractJLinkExecutor
      * @return the exit code ({@code 0} on success).
      */
     @Override
-    public int executeJlink( File argsFile )
+    public int executeJlink( List<String> jlinkArgs )
     {
         getLog().info( "Toolchain in maven-jlink-plugin: jlink [ " + 
this.jLinkExec + " ]" );
 
-        Commandline cmd = createJLinkCommandLine( argsFile );
+        Commandline cmd = createJLinkCommandLine( jlinkArgs );
         cmd.setExecutable( this.jLinkExec );
 
         throw new UnsupportedOperationException( "not implemented" );
     }
 
-    private Commandline createJLinkCommandLine( File argsFile )
+    private Commandline createJLinkCommandLine( List<String> jlinkArgs )
     {
         Commandline cmd = new Commandline();
-        cmd.createArg().setValue( '@' + argsFile.getAbsolutePath() );
+        jlinkArgs.forEach( arg -> cmd.createArg().setValue( arg ) );
 
         return cmd;
     }
diff --git a/src/main/java/org/apache/maven/plugins/jlink/JLinkMojo.java 
b/src/main/java/org/apache/maven/plugins/jlink/JLinkMojo.java
index 790859e..c1ebfb6 100644
--- a/src/main/java/org/apache/maven/plugins/jlink/JLinkMojo.java
+++ b/src/main/java/org/apache/maven/plugins/jlink/JLinkMojo.java
@@ -21,7 +21,6 @@ package org.apache.maven.plugins.jlink;
 
 import java.io.File;
 import java.io.IOException;
-import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -307,17 +306,9 @@ public class JLinkMojo
         );
         jLinkExec.addAllModulePaths( pathsOfModules );
 
-        File argsFile;
-        try
-        {
-            argsFile = createJlinkArgsFile( pathsOfModules, modulesToAdd );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( e.getMessage() );
-        }
+        List<String> jlinkArgs = createJlinkArgs( pathsOfModules, modulesToAdd 
);
 
-        jLinkExec.executeJlink( argsFile );
+        jLinkExec.executeJlink( jlinkArgs );
 
         File createZipArchiveFromImage = createZipArchiveFromImage( 
buildDirectory, outputDirectoryImage );
 
@@ -514,126 +505,116 @@ public class JLinkMojo
         }
     }
 
-    private File createJlinkArgsFile( Collection<String> pathsOfModules,
-                                      Collection<String> modulesToAdd ) throws 
IOException
+    private List<String> createJlinkArgs( Collection<String> pathsOfModules,
+                                      Collection<String> modulesToAdd )
     {
-        File file = new File( this.outputDirectoryImage.getParentFile(), 
"jlinkArgs" );
-        if ( !getLog().isDebugEnabled() )
-        {
-            file.deleteOnExit();
-        }
-        file.getParentFile().mkdirs();
-        file.createNewFile();
-
-        PrintStream argsFile = new PrintStream( file );
+        List<String> jlinkArgs = new ArrayList<>();
 
         if ( stripDebug )
         {
-            argsFile.println( "--strip-debug" );
+            jlinkArgs.add( "--strip-debug" );
         }
 
         if ( bindServices )
         {
-            argsFile.println( "--bind-services" );
+            jlinkArgs.add( "--bind-services" );
         }
 
         if ( endian != null )
         {
-            argsFile.println( "--endian" );
-            argsFile.println( endian );
+            jlinkArgs.add( "--endian" );
+            jlinkArgs.add( endian );
         }
         if ( ignoreSigningInformation )
         {
-            argsFile.println( "--ignore-signing-information" );
+            jlinkArgs.add( "--ignore-signing-information" );
         }
         if ( compress != null )
         {
-            argsFile.println( "--compress" );
-            argsFile.println( compress );
+            jlinkArgs.add( "--compress" );
+            jlinkArgs.add( compress + "" );
         }
         if ( launcher != null )
         {
-            argsFile.println( "--launcher" );
-            argsFile.println( launcher );
+            jlinkArgs.add( "--launcher" );
+            jlinkArgs.add( launcher );
         }
 
         if ( disablePlugin != null )
         {
-            argsFile.println( "--disable-plugin" );
-            argsFile.append( '"' ).append( disablePlugin ).println( '"' );
+            jlinkArgs.add( "--disable-plugin" );
+            jlinkArgs.add( disablePlugin );
 
         }
         if ( pathsOfModules != null )
         {
             // @formatter:off
-            argsFile.println( "--module-path" );
-            argsFile.append( '"' )
-                .append( getPlatformDependSeparateList( pathsOfModules )
-                         .replace( "\\", "\\\\" ) ).println( '"' );
+            jlinkArgs.add( "--module-path" );
+            jlinkArgs.add( getPlatformDependSeparateList( pathsOfModules 
).replace( "\\", "\\\\" ) );
             // @formatter:off
         }
 
         if ( noHeaderFiles )
         {
-            argsFile.println( "--no-header-files" );
+            jlinkArgs.add( "--no-header-files" );
         }
 
         if ( noManPages )
         {
-            argsFile.println( "--no-man-pages" );
+            jlinkArgs.add( "--no-man-pages" );
         }
 
         if ( hasSuggestProviders() )
         {
-            argsFile.println( "--suggest-providers" );
+            jlinkArgs.add( "--suggest-providers" );
             String sb = getCommaSeparatedList( suggestProviders );
-            argsFile.println( sb );
+            jlinkArgs.add( sb );
         }
 
         if ( hasLimitModules() )
         {
-            argsFile.println( "--limit-modules" );
+            jlinkArgs.add( "--limit-modules" );
             String sb = getCommaSeparatedList( limitModules );
-            argsFile.println( sb );
+            jlinkArgs.add( sb );
         }
 
         if ( !modulesToAdd.isEmpty() )
         {
-            argsFile.println( "--add-modules" );
+            jlinkArgs.add( "--add-modules" );
             // This must be name of the module and *NOT* the name of the
             // file! Can we somehow pre check this information to fail early?
             String sb = getCommaSeparatedList( modulesToAdd );
-            argsFile.append( '"' ).append( sb.replace( "\\", "\\\\" ) 
).println( '"' );
+            jlinkArgs.add( sb.replace( "\\", "\\\\" ) );
         }
 
         if ( hasIncludeLocales() )
         {
-            argsFile.println( "--add-modules" );
-            argsFile.println( "jdk.localedata" );
-            argsFile.println( "--include-locales" );
+            jlinkArgs.add( "--add-modules" );
+            jlinkArgs.add( "jdk.localedata" );
+            jlinkArgs.add( "--include-locales" );
             String sb = getCommaSeparatedList( includeLocales );
-            argsFile.println( sb );
+            jlinkArgs.add( sb );
         }
 
         if ( pluginModulePath != null )
         {
-            argsFile.println( "--plugin-module-path" );
+            jlinkArgs.add( "--plugin-module-path" );
             StringBuilder sb = 
convertSeparatedModulePathToPlatformSeparatedModulePath( pluginModulePath );
-            argsFile.append( '"' ).append( sb.toString().replace( "\\", "\\\\" 
) ).println( '"' );
+            jlinkArgs.add( sb.toString().replace( "\\", "\\\\" ) );
         }
 
         if ( buildDirectory != null )
         {
-            argsFile.println( "--output" );
-            argsFile.println( outputDirectoryImage );
+            jlinkArgs.add( "--output" );
+            jlinkArgs.add( outputDirectoryImage.getAbsolutePath() );
         }
 
         if ( verbose )
         {
-            argsFile.println( "--verbose" );
+            jlinkArgs.add( "--verbose" );
         }
-        argsFile.close();
-        return file;
+
+        return Collections.unmodifiableList( jlinkArgs );
     }
 
     private boolean hasIncludeLocales()
diff --git a/src/main/java9/org/apache/maven/plugins/jlink/JLinkExecutor.java 
b/src/main/java9/org/apache/maven/plugins/jlink/JLinkExecutor.java
index c78b8c3..7310a3e 100644
--- a/src/main/java9/org/apache/maven/plugins/jlink/JLinkExecutor.java
+++ b/src/main/java9/org/apache/maven/plugins/jlink/JLinkExecutor.java
@@ -28,14 +28,9 @@ import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.nio.file.Files;
-import java.util.ArrayDeque;
-import java.util.Deque;
 import java.util.List;
 import java.util.Optional;
 import java.util.spi.ToolProvider;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * JDK9+ executor for jlink.
@@ -73,49 +68,13 @@ class JLinkExecutor extends AbstractJLinkExecutor
                 .orElseThrow( () -> new IllegalStateException( "No jlink tool 
found." ) );
     }
 
-
-    protected Stream<String> argsfileToArgs( File argsFile )
-    {
-        try
-        {
-            List<String> strings = Files.readAllLines( argsFile.toPath() );
-            Deque<String> out = new ArrayDeque<>();
-
-            for ( String line : strings )
-            {
-                if ( line.startsWith( "-" ) )
-                {
-                    out.add( line );
-                    continue;
-                }
-
-                if ( line.startsWith( "\"" ) && line.endsWith( "\"" ) )
-                {
-                    out.add( line.substring( 1, line.lastIndexOf( "\"" ) ) );
-                    continue;
-                }
-
-                out.add( line );
-            }
-
-            return out.stream();
-        }
-        catch ( IOException e )
-        {
-            throw new IllegalStateException( "Unable to read jlinkArgs file: " 
+ argsFile.getAbsolutePath() );
-        }
-
-    }
-
     @Override
-    public int executeJlink( File argsFile ) throws MojoExecutionException
+    public int executeJlink( List<String> jlinkArgs ) throws 
MojoExecutionException
     {
-        List<String> actualArgs = this.argsfileToArgs( argsFile ).collect( 
Collectors.toList() );
-
         if ( getLog().isDebugEnabled() )
         {
             // no quoted arguments ???
-            getLog().debug( this.toolProvider.name() + " " + actualArgs );
+            getLog().debug( this.toolProvider.name() + " " + jlinkArgs );
         }
 
         try ( ByteArrayOutputStream baosErr = new ByteArrayOutputStream();
@@ -123,7 +82,7 @@ class JLinkExecutor extends AbstractJLinkExecutor
               ByteArrayOutputStream baosOut = new ByteArrayOutputStream();
               PrintWriter out = new PrintWriter( baosOut ) )
         {
-            int exitCode = this.toolProvider.run( out, err, 
actualArgs.toArray( new String[0] ) );
+            int exitCode = this.toolProvider.run( out, err, jlinkArgs.toArray( 
new String[0] ) );
             out.flush();
             err.flush();
 
@@ -151,7 +110,7 @@ class JLinkExecutor extends AbstractJLinkExecutor
                 }
                 msg.append( '\n' );
                 msg.append( "Command line was: " ).append( 
this.toolProvider.name() ).append( ' ' ).append(
-                        actualArgs ).append( '\n' ).append( '\n' );
+                        jlinkArgs ).append( '\n' ).append( '\n' );
 
                 throw new MojoExecutionException( msg.toString() );
             }

Reply via email to