private Commandline createJModCreateCommandLine()

in src/main/java/org/apache/maven/plugins/jmod/JModCreateMojo.java [527:663]


    private Commandline createJModCreateCommandLine( File resultingJModFile )
        throws IOException
    {
        File file = new File( outputDirectory, "jmodCreateArgs" );
        if ( !getLog().isDebugEnabled() )
        {
            file.deleteOnExit();
        }
        file.getParentFile().mkdirs();
        file.createNewFile();

        PrintStream argsFile = new PrintStream( file );

        argsFile.println( "create" );

        if ( moduleVersion != null )
        {
            argsFile.println( "--module-version" );
            argsFile.println( moduleVersion );
        }

        List<String> classPaths;
        if ( classpathElements != null )
        {
            classPaths = new ArrayList<>( classpathElements );
        }
        else
        {
            classPaths = new ArrayList<>( 1 );
        }
        if ( targetClassesDirectory.exists() )
        {
            classPaths.add( targetClassesDirectory.getAbsolutePath() );
        }
        
        argsFile.println( "--class-path" );
        argsFile .append( '"' )
                 .append( getPlatformSeparatedList( classPaths ).replace( "\\", "\\\\" ) ) 
                 .println( '"' );

        if ( excludes != null && !excludes.isEmpty() )
        {
            argsFile.println( "--exclude" );
            String commaSeparatedList = getCommaSeparatedList( excludes );
            argsFile.append( '"' ).append( commaSeparatedList.replace( "\\", "\\\\" ) ).println( '"' );
        }

        List<String> configList = handleConfigurationListWithDefault( configs, DEFAULT_CONFIG_DIRECTORY );
        if ( !configList.isEmpty() )
        {
            argsFile.println( "--config" );
            // Should we quote the paths?
            argsFile.println( getPlatformSeparatedList( configList ) );
        }

        if ( StringUtils.isNotBlank( mainClass ) )
        {
            argsFile.println( "--main-class" );
            argsFile.println( mainClass );
        }

        List<String> cmdsList = handleConfigurationListWithDefault( cmds, DEFAULT_CMD_DIRECTORY );
        if ( !cmdsList.isEmpty() )
        {
            argsFile.println( "--cmds" );
            argsFile.println( getPlatformSeparatedList( cmdsList ) );
        }

        List<String> libsList = handleConfigurationListWithDefault( libs, DEFAULT_LIB_DIRECTORY );
        if ( !libsList.isEmpty() )
        {
            argsFile.println( "--libs" );
            argsFile.println( getPlatformSeparatedList( libsList ) );
        }

        List<String> headerFilesList =
            handleConfigurationListWithDefault( headerFiles, DEFAULT_HEADER_FILES_DIRECTORY );
        if ( !headerFilesList.isEmpty() )
        {
            argsFile.println( "--header-files" );
            argsFile.println( getPlatformSeparatedList( headerFilesList ) );
        }

        List<String> legalNoticesList =
            handleConfigurationListWithDefault( legalNotices, DEFAULT_LEGAL_NOTICES_DIRECTORY );
        if ( !legalNoticesList.isEmpty() )
        {
            argsFile.println( "--legal-notices" );
            argsFile.println( getPlatformSeparatedList( legalNoticesList ) );
        }

        List<String> manPagesList = handleConfigurationListWithDefault( manPages, DEFAULT_MAN_PAGES_DIRECTORY );
        if ( !manPagesList.isEmpty() )
        {
            argsFile.println( "--man-pages" );
            argsFile.println( getPlatformSeparatedList( manPagesList ) );
        }

        List<String> modulePaths = new ArrayList<>( modulepathElements );
        modulePaths.add( new File( javaHome, JMODS ).getAbsolutePath() );

        if ( modulePaths != null )
        {
            //@formatter:off
            argsFile.println( "--module-path" );
            argsFile
              .append( '"' )
              .append( getPlatformSeparatedList( modulePaths ).replace( "\\", "\\\\" ) ) 
              .println( '"' );
            //@formatter:off
        }

        if ( targetPlatform != null )
        {
            argsFile.println( "--target-platform" );
            argsFile.println( targetPlatform );
        }

        if ( warnIfResolved != null )
        {
            argsFile.println( "--warn-if-resolved" );
            argsFile.println( warnIfResolved );
        }

        if ( doNotResolveByDefault )
        {
            argsFile.println( "--do-not-resolve-by-default" );
        }

        argsFile.println( resultingJModFile.getAbsolutePath() );
        argsFile.close();

        Commandline cmd = new Commandline();
        cmd.createArg().setValue( '@' + file.getAbsolutePath() );

        return cmd;
    }