Como executar comando shell em um programa Java

Tempo de leitura: menos de 1 minuto

star-wars-IV-terminal-linux-05Semana passada, implementado um cenário de teste, tive a necessidade de executar um comando shell. Vou explicar melhor.

O cenário de teste que estava implementado, tinha a necessidade do banco de dados da aplicação estivesse atualizado.

Build do nosso projeto é baseado em Gradle (O Gradle é um sistema avançado de automatização de builds que une o melhor da flexibilidade do Ant com o gerenciamento de dependências e as convenções do Maven), sendo assim, existe uma task gradle para atualizar a banco de dados, então porque recriar no meu teste? Basta apenas executar a task e pronto!

Foi aí que me perguntei, como posso executar um comando shell dentro da minha classe Java?

Fui até o Google pesquisar e encontrei a seguinte solução:

[code language=”java”]
private String executeCommand(String command) {
StringBuffer output = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

String line = "";
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
}

} catch (Exception e) {
e.printStackTrace();
}
return output.toString();
}
[/code]

Copiei o método para o meu teste e chamei o método executeCommand passando o comando shell que desejava executar:

[code language=”java”]
//chamando a task atualizaDb
executeCommand("gradle atualizaDb");
[/code]

Legal né! Faça o teste, acho que funciona com qualquer comando, testei o ping, ls e grep e funcionou sem problemas.

Fonte: How to execute shell command from Java

Abraços.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *