Если вы используете тип командной строки из plexus-utils , вы можете избежать большой нагрузки, связанной с взаимодействием командной строки, например, ожидания процесса, экранирования аргументов и т. Д. Вы можете установить команду а также при необходимости.
Вы можете передать StreamConsumers для захвата stdout и stderr, обработка командной строки будет передавать выходные данные потребителям по одной строке за раз.
Commandline cl = new Commandline();
cl.setExecutable( "dir" );
cl.setWorkingDirectory( workingDirectory.getAbsolutePath() );
cl.createArg().setValue( "/S" );
StreamConsumer consumer = new StreamConsumer() {
public void consumeLine( String line ) {
//do something with the line
}
};
StreamConsumer stderr = new StreamConsumer() {
public void consumeLine( String line ) {
//do something with the line
}
};
int exitCode;
try {
exitCode = CommandLineUtils.execute( cl, consumer, stderr, getLogger() );
} catch ( CommandLineException ex ) {
//handle exception
}