Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.codehaus.mojo.gwt.shell;
  
  /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
  *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
  */
 
 import java.io.File;
 import java.util.List;
 import java.util.Map;
 

Author(s):
Olivier Lamy
Since:
2.1.0-1
 
 public class JavaCommand
 {
     private String className;
 
     private List<Fileclasspath = new LinkedList<File>();
 
     private final List<Stringargs = new ArrayList<String>();
 
     private Properties systemProperties = new Properties();
 
     private Properties env = new Properties();
 
     private Collection<FileclassPathFiles;
     
     private List<StringjvmArgs;
     
     private String jvm;
     
     private Log log;
     
     private int timeOut;
     
     private List<ClassPathProcessorclassPathProcessors;
    
    
A plexus-util StreamConsumer to redirect messages to plugin log
 
     protected StreamConsumer out = new StreamConsumer()
     {
         public void consumeLineString line )
         {
             .infoline );
         }
     };

    
A plexus-util StreamConsumer to redirect errors to plugin log
 
     private StreamConsumer err = new StreamConsumer()
     {
         public void consumeLineString line )
         {
             .errorline );
         }
     };
    
    
 
     public JavaCommandJavaCommandRequest javaCommandRequest)
     {
         this. = javaCommandRequest.getClassName();
         this. = javaCommandRequest.getClassPathFiles();
         this. = javaCommandRequest.getJvmArgs();
         this. = javaCommandRequest.getJvm();
        this. = javaCommandRequest.getLog();
        this. = javaCommandRequest.getTimeOut();
        this. = javaCommandRequest.getClassPathProcessors();
    }
    public JavaCommand withinScopeString scope )
        throws MojoExecutionException
    {
        if ( this. != null )
        {
            .addAllthis. );
        }
        if ( this. != null )
        {
            for ( ClassPathProcessor classPathProcessor : this. )
            {
                classPathProcessor.postProcessClassPath );
            }
        }
        return this;
    }
    public JavaCommand withinClasspathFile... path )
    {
        for ( File file : path )
        {
            .addfile );
        }
        return this;
    }
    public JavaCommand argString arg )
    {
        .addarg );
        return this;
    }
    public JavaCommand argString argString value )
    {
        .addarg );
        .addvalue );
        return this;
    }
    public JavaCommand argboolean conditionString arg )
    {
        if ( condition )
        {
            .addarg );
        }
        return this;
    }
    public JavaCommand systemPropertyString nameString value )
    {
        .setPropertynamevalue );
        return this;
    }
    public JavaCommand environmentString nameString value )
    {
        .setPropertynamevalue );
        return this;
    }
    public void execute()
        throws JavaCommandException
    {
        List<Stringcommand = new ArrayList<String>();
        if (this. != null)
        {
            command.addAllthis. );
        }
        command.add"-classpath" );
        List<Stringpath = new ArrayList<String>( .size() );
        for ( File file :  )
        {
            path.addfile.getAbsolutePath() );
        }
        command.add( StringUtils.joinpath.iterator(), . ) );
        if (  != null )
        {
            for ( Map.Entry entry : .entrySet() )
            {
                command.add"-D" + entry.getKey() + "=" + entry.getValue() );
            }
        }
        command.add );
        command.addAll );
        try
        {
            String[] arguments = (String[]) command.toArraynew String[command.size()] );
            // On windows, the default Shell will fall into command line length limitation issue
            // On Unixes, not using a Shell breaks the classpath (NoClassDefFoundError:
            // com/google/gwt/dev/Compiler).
            Commandline cmd =
                Os.isFamily. ) ? new Commandlinenew JavaShell() ) : new Commandline();
            cmd.setExecutablethis.getJavaCommand() );
            cmd.addArgumentsarguments );
            if (  != null )
            {
                for ( Map.Entry entry : .entrySet() )
                {
                    .debug"add env " + (Stringentry.getKey() + " with value " + (Stringentry.getValue() );
                    cmd.addEnvironment( (Stringentry.getKey(), (Stringentry.getValue() );
                }
            }
            .debug"Execute command :\n" + cmd.toString() );
            int status;
            if (  > 0 )
            {
                status = CommandLineUtils.executeCommandLinecmd );
            }
            else
            {
                status = CommandLineUtils.executeCommandLinecmd );
            }
            if ( status != 0 )
            {
                throw new JavaCommandException"Command [[\n" + cmd.toString()
                    + "\n]] failed with status " + status );
            }
        }
        catch ( CommandLineTimeOutException e )
        {
            if (  > 0 )
            {
                .warn"Forked JVM has been killed on time-out after " +  + " seconds" );
                return;
            }
            throw new JavaCommandException"Time-out on command line execution :\n" + commande );
        }
        catch ( CommandLineException e )
        {
            throw new JavaCommandException"Failed to execute command line :\n" + commande );
        }
    }
    private String getJavaCommand()
        throws JavaCommandException
    {
        if ( StringUtils.isEmpty ) )
        {
            // use the same JVM as the one used to run Maven (the "java.home" one)
             = System.getProperty"java.home" );
        }
        // does-it exists ? is-it a directory or a path to a java executable ?
        File jvmFile = new File );
        if ( !jvmFile.exists() )
        {
            throw new JavaCommandException"the configured jvm " + 
                + " doesn't exists please check your environnement" );
        }
        if ( jvmFile.isDirectory() )
        {
            // it's a directory we construct the path to the java executable
            return jvmFile.getAbsolutePath() + . + "bin" + . + "java";
        }
        .debug"use jvm " +  );
        return ;
    }
    
    public void withinClasspathFirstFile oophmJar )
    {
        .add( 0, oophmJar );
    }
New to GrepCode? Check out our FAQ X