本文整理匯總了Java中org.apache.commons.exec.CommandLine類的典型用法代碼示例。如果您正苦於以下問題:Java CommandLine類的具體用法?Java CommandLine怎麽用?Java CommandLine使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
CommandLine類屬於org.apache.commons.exec包,在下文中一共展示了CommandLine類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: buildActionCommand
import org.apache.commons.exec.CommandLine; //導入依賴的package包/類
private CommandLine buildActionCommand(String terraformPath, String action, Map<String, Object> variableMap) {
CommandLine actionCommand = new CommandLine(terraformPath);
actionCommand.addArgument(action);
if (action.equals(Constants.ACTION_DESTROY)) {
actionCommand.addArgument(FLAG_FORCE);
}
actionCommand.addArgument(FLAG_NO_COLOR);
for (Entry<String, Object> variableEntry : variableMap.entrySet()) {
String variableName = variableEntry.getKey();
String variableValue = (String) variableEntry.getValue();
String variableString = variableName + Constants.CHAR_EQUAL + (variableValue.equals("on") ? "true" : variableValue);
actionCommand.addArgument(FLAG_VAR);
actionCommand.addArgument(variableString, false);
}
return actionCommand;
}
示例2: execToFile
import org.apache.commons.exec.CommandLine; //導入依賴的package包/類
/**
* 日誌文件輸出方式
*
* 優點:支持將目標數據實時輸出到指定日誌文件中去
* 缺點:
* 標準輸出和錯誤輸出優先級固定,可能和腳本中順序不一致
* Java無法實時獲取
*
* @param command
* @param scriptFile
* @param logFile
* @param params
* @return
* @throws IOException
*/
public static int execToFile(String command, String scriptFile, String logFile, String... params) throws IOException {
// 標準輸出:print (null if watchdog timeout)
// 錯誤輸出:logging + 異常 (still exists if watchdog timeout)
// 標準輸入
FileOutputStream fileOutputStream = new FileOutputStream(logFile, true);
PumpStreamHandler streamHandler = new PumpStreamHandler(fileOutputStream, fileOutputStream, null);
// command
CommandLine commandline = new CommandLine(command);
commandline.addArgument(scriptFile);
if (params!=null && params.length>0) {
commandline.addArguments(params);
}
// exec
DefaultExecutor exec = new DefaultExecutor();
exec.setExitValues(null);
exec.setStreamHandler(streamHandler);
int exitValue = exec.execute(commandline); // exit code: 0=success, 1=error
return exitValue;
}
示例3: startJekyllCI
import org.apache.commons.exec.CommandLine; //導入依賴的package包/類
/**
* Starts the jekyll build process (jekyll build --incremental)
* @return true, if jekyll build was successful
*/
public boolean startJekyllCI() {
int exitValue = -1;
String line = JEKYLL_PATH;
ByteArrayOutputStream jekyllBuildOutput = new ByteArrayOutputStream();
CommandLine cmdLine = CommandLine.parse(line);
cmdLine.addArgument(JEKYLL_OPTION_BUILD);
cmdLine.addArgument(JEKYLL_OPTION_INCR);
DefaultExecutor executor = new DefaultExecutor();
executor.setWorkingDirectory(new File(LOCAL_REPO_PATH));
PumpStreamHandler streamHandler = new PumpStreamHandler(jekyllBuildOutput);
executor.setStreamHandler(streamHandler);
try {
LOGGER.info("Starting jekyll build");
exitValue = executor.execute(cmdLine);
LOGGER.info("Jekyll build command executed");
} catch (IOException e) {
LOGGER.error("Error while executing jekyll build. Error message: {}", e.getMessage());
e.printStackTrace();
return false;
}
printJekyllStatus(exitValue, jekyllBuildOutput.toString());
return true;
}
示例4: main
import org.apache.commons.exec.CommandLine; //導入依賴的package包/類
public static void main(String[] args) throws Exception {
String cmd = "/tmp/test.sh";
CommandLine cmdLine = CommandLine.parse("/bin/bash " + cmd);
ByteArrayOutputStream stdout = new ByteArrayOutputStream();
ByteArrayOutputStream stderr = new ByteArrayOutputStream();
PumpStreamHandler psh = new PumpStreamHandler(stdout, stderr);
psh.setStopTimeout(TIMEOUT_FIVE_MINUTES);
ExecuteWatchdog watchdog = new ExecuteWatchdog(TIMEOUT_TEN_MINUTES); // timeout in milliseconds
Executor executor = new DefaultExecutor();
executor.setExitValue(0);
executor.setStreamHandler(psh);
executor.setWatchdog(watchdog);
int exitValue = executor.execute(cmdLine, Collections.emptyMap());
System.out.println(exitValue);
}
示例5: compile
import org.apache.commons.exec.CommandLine; //導入依賴的package包/類
public void compile(String cwd, Submission submission) throws RuntimeException {
ByteArrayOutputStream stderr = new ByteArrayOutputStream();
ExecuteWatchdog watchdog = new ExecuteWatchdog(watchdogTimeout);
DefaultExecutor executor = new DefaultExecutor();
executor.setWorkingDirectory(new File(cwd));
executor.setStreamHandler(new PumpStreamHandler(null, stderr, null));
executor.setWatchdog(watchdog);
CommandLine cmd = new CommandLine(javac);
cmd.addArgument("-J-Duser.language=en"); // force using English
cmd.addArgument("-classpath");
cmd.addArgument(cwd);
cmd.addArgument(fileName + ".java");
logger.info("Compiler cmd:\t" + cmd.toString());
try {
executor.execute(cmd);
logger.info("Compile OK");
} catch (IOException e) {
if (watchdog.killedProcess()) {
submission.setStatus(Submission.STATUS_CE);
submission.setError("Compile Time Exceeded");
logger.warn("Compile Time Exceeded:\t" + e.getMessage());
} else {
submission.setStatus(Submission.STATUS_CE);
submission.setError("Compile error");
logger.warn("Compile error:\t" + e.getMessage());
}
logger.warn(stderr.toString());
throw new RuntimeException("Compile Aborted.");
}
}
示例6: compile
import org.apache.commons.exec.CommandLine; //導入依賴的package包/類
public void compile(String cwd, Submission submission) throws RuntimeException {
CommandLine cmd = new CommandLine(compiler);
cmd.addArgument("-basedir=" + cwd);
cmd.addArgument("-compiler=" + realCompiler);
cmd.addArgument("-filename=" + fileName + "." + suffix);
cmd.addArgument("-timeout=" + watchdogTimeout);
cmd.addArgument("-std=" + std);
logger.info(cmd.toString());
ByteArrayOutputStream stderr = new ByteArrayOutputStream();
DefaultExecutor executor = new DefaultExecutor();
executor.setStreamHandler(new PumpStreamHandler(null, stderr, null));
try {
executor.execute(cmd);
if (stderr.toString().length() > 0) {
submission.setStatus(Submission.STATUS_CE);
submission.setError("Compile error");
logger.warn(stderr.toString());
throw new RuntimeException("Sandbox Aborted.");
}
logger.info("Compile OK");
} catch (IOException e) {
logger.warn("Compile error:\t" + e.getMessage());
throw new RuntimeException("An Error Occurred.");
}
}
示例7: exec
import org.apache.commons.exec.CommandLine; //導入依賴的package包/類
/**
* Esegue un comando di shell
* @param command comando
* @param args lista di argomenti (ogni elemento puo' contenere spazi), puo' essere null
* @param outputStream ByteArrayOutputStream che conterrà l'output del comando
* @return the error message (will be empty for a return code >0), or null if there was no error
*/
public String exec(String command, List<String> args, ByteArrayOutputStream outputStream) {
int exitValue=1;
try {
CommandLine commandLine = new CommandLine(command);
if (args!=null) {
for (String arg : args) {
commandLine.addArgument(arg, false); // Don't handle quoting
}
}
DefaultExecutor executor = new DefaultExecutor();
PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream);
executor.setStreamHandler(streamHandler);
log.debug("Executing shell command: {}", commandLine);
exitValue = executor.execute(commandLine);
} catch (Exception e) {
log.error("Failed to execute shell command: " + command + " " + args, e);
return e.getMessage();
}
return exitValue>0?"":null;
}
示例8: execute
import org.apache.commons.exec.CommandLine; //導入依賴的package包/類
public int execute(String[] args, @Nullable Path workingDir, Map<String, String> addEnv) throws IOException {
if (!Files.isExecutable(file)) {
Set<PosixFilePermission> perms = new HashSet<PosixFilePermission>();
perms.add(PosixFilePermission.OWNER_READ);
perms.add(PosixFilePermission.OWNER_EXECUTE);
Files.setPosixFilePermissions(file, perms);
}
ExecuteWatchdog watchdog = new ExecuteWatchdog(TIMEOUT);
CommandLine cmd = new CommandLine(file.toFile());
cmd.addArguments(args);
DefaultExecutor exec = new DefaultExecutor();
exec.setWatchdog(watchdog);
exec.setStreamHandler(createStreamHandler());
exec.setExitValues(null);
if (workingDir != null) {
exec.setWorkingDirectory(workingDir.toFile());
}
in.close();
LOG.info("Executing: {}", cmd.toString());
Map<String, String> env = new HashMap<>(System.getenv());
env.putAll(addEnv);
return exec.execute(cmd, env);
}
示例9: dockerAsync
import org.apache.commons.exec.CommandLine; //導入依賴的package包/類
/**
* Runs docker command asynchronously.
*
* @param arguments command line arguments
* @param out stdout will be written in to this file
*
* @return a handle used to stop the command process
*
* @throws IOException when command has error
*/
public ExecuteWatchdog dockerAsync(final List<Object> arguments, OutputStream out) throws IOException {
CommandLine cmdLine = new CommandLine(DOCKER);
arguments.forEach((arg) -> {
cmdLine.addArgument(arg + "");
});
LOG.debug("[{} {}]", cmdLine.getExecutable(), StringUtils.join(cmdLine.getArguments(), " "));
List<String> output = new ArrayList<>();
ExecuteWatchdog watchdog = new ExecuteWatchdog(ExecuteWatchdog.INFINITE_TIMEOUT);
Executor executor = new DefaultExecutor();
executor.setWatchdog(watchdog);
PrintWriter writer = new PrintWriter(out);
ESH esh = new ESH(writer);
executor.setStreamHandler(esh);
executor.execute(cmdLine, new DefaultExecuteResultHandler());
return watchdog;
}
示例10: handle
import org.apache.commons.exec.CommandLine; //導入依賴的package包/類
@Override
public Map<String,Object> handle (Task aTask) throws Exception {
CommandLine cmd = new CommandLine ("mediainfo");
cmd.addArgument(aTask.getRequiredString("input"));
log.debug("{}",cmd);
DefaultExecutor exec = new DefaultExecutor();
File tempFile = File.createTempFile("log", null);
try (PrintStream stream = new PrintStream(tempFile);) {
exec.setStreamHandler(new PumpStreamHandler(stream));
exec.execute(cmd);
return parse(FileUtils.readFileToString(tempFile));
}
catch (ExecuteException e) {
throw new ExecuteException(e.getMessage(),e.getExitValue(), new RuntimeException(FileUtils.readFileToString(tempFile)));
}
finally {
FileUtils.deleteQuietly(tempFile);
}
}
示例11: handle
import org.apache.commons.exec.CommandLine; //導入依賴的package包/類
@Override
public Object handle(Task aTask) throws Exception {
List<String> options = aTask.getList("options", String.class);
CommandLine cmd = new CommandLine ("ffmpeg");
options.forEach(o->cmd.addArgument(o));
log.debug("{}",cmd);
DefaultExecutor exec = new DefaultExecutor();
File tempFile = File.createTempFile("log", null);
try (PrintStream stream = new PrintStream(tempFile);) {
exec.setStreamHandler(new PumpStreamHandler(stream));
int exitValue = exec.execute(cmd);
return exitValue!=0?FileUtils.readFileToString(tempFile):cmd.toString();
}
catch (ExecuteException e) {
throw new ExecuteException(e.getMessage(),e.getExitValue(), new RuntimeException(FileUtils.readFileToString(tempFile)));
}
finally {
FileUtils.deleteQuietly(tempFile);
}
}
示例12: handle
import org.apache.commons.exec.CommandLine; //導入依賴的package包/類
@Override
public Map<String,Object> handle(Task aTask) throws Exception {
CommandLine cmd = new CommandLine ("ffprobe");
cmd.addArgument("-v")
.addArgument("quiet")
.addArgument("-print_format")
.addArgument("json")
.addArgument("-show_error")
.addArgument("-show_format")
.addArgument("-show_streams")
.addArgument(aTask.getRequiredString("input"));
log.debug("{}",cmd);
DefaultExecutor exec = new DefaultExecutor();
File tempFile = File.createTempFile("log", null);
try (PrintStream stream = new PrintStream(tempFile);) {
exec.setStreamHandler(new PumpStreamHandler(stream));
exec.execute(cmd);
return parse(FileUtils.readFileToString(tempFile));
}
catch (ExecuteException e) {
throw new ExecuteException(e.getMessage(),e.getExitValue(), new RuntimeException(FileUtils.readFileToString(tempFile)));
}
finally {
FileUtils.deleteQuietly(tempFile);
}
}
示例13: start
import org.apache.commons.exec.CommandLine; //導入依賴的package包/類
public AppRunnerInstance start() {
File dir = new File("target/e2e/" + id + "/" + System.currentTimeMillis());
assertTrue(dir.mkdirs());
int httpPort = getAFreePort();
int httpsPort = getAFreePort();
File uberJar = new File(FilenameUtils.separatorsToSystem("target/e2e/" + jarName));
if (!uberJar.isFile()) {
throw new RuntimeException("Could not find the app-runner jar. Try running mvn compile first.");
}
CommandLine command = new CommandLine("java")
.addArgument("-Dlogback.configurationFile=" + dirPath(new File("src/test/resources/logback-test.xml")))
.addArgument("-Dappserver.port=" + httpPort)
.addArgument("-Dappserver.https.port=" + httpsPort)
.addArgument("-Dappserver.data.dir=" + dirPath(new File(dir, "data")))
.addArgument("-Dapprunner.keystore.path=" + dirPath(new File("local/test.keystore")))
.addArgument("-Dapprunner.keystore.password=password")
.addArgument("-Dapprunner.keymanager.password=password")
.addArgument("-jar")
.addArgument(dirPath(uberJar));
httpUrl = URI.create("http://localhost:" + httpPort + "/");
httpsUrl = URI.create("https://localhost:" + httpsPort + "/");
log.info("Starting " + id + " at " + httpUrl);
this.killer = new ProcessStarter(log).startDaemon(env, command, dir, Waiter.waitFor(id, httpUrl, 60, TimeUnit.SECONDS));
return this;
}
示例14: runJar
import org.apache.commons.exec.CommandLine; //導入依賴的package包/類
private ExecuteWatchdog runJar(InvocationOutputHandler buildLogHandler, InvocationOutputHandler consoleLogHandler, Map<String, String> envVarsForApp, Waiter startupWaiter) {
Path libsPath = Paths.get(projectRoot.getPath(), "build", "libs");
File libsFolder = libsPath.toFile();
// To simplify implementation, now I assume only 1 uberjar named "artifact-version-all.jar" under libs folder
// As we clean the project every time, I can't foresee any possibility that will mix up other uberjars.
File[] files = libsFolder.listFiles();
if(files == null) {
throw new ProjectCannotStartException(libsFolder.getPath() + " doesn't exist");
}
Optional<File> jar = Stream.of(files).filter((f) -> f.getName().contains("all")).findFirst();
if (!jar.isPresent() || !jar.get().isFile()) {
throw new ProjectCannotStartException("Could not find the jar file at " + jar.get().getPath());
}
CommandLine command = javaHomeProvider.commandLine(envVarsForApp)
.addArgument("-Djava.io.tmpdir=" + envVarsForApp.get("TEMP"))
.addArgument("-jar")
.addArgument(fullPath(jar.get()));
return ProcessStarter.startDaemon(buildLogHandler, consoleLogHandler, envVarsForApp, command, projectRoot, startupWaiter);
}
示例15: runCancelJob
import org.apache.commons.exec.CommandLine; //導入依賴的package包/類
private void runCancelJob(Master.Job message) {
if (getAbortStatus(message.abortUrl, message.trackingId)) {
CommandLine cmdLine = new CommandLine("/bin/bash");
cmdLine.addArgument(agentConfig.getJob().getJobArtifact("cancel"));
cmdLine.addArgument(message.jobId);
DefaultExecutor killExecutor = new DefaultExecutor();
ExecuteWatchdog watchdog = new ExecuteWatchdog(ExecuteWatchdog.INFINITE_TIMEOUT);
killExecutor.setWatchdog(watchdog);
try {
log.info("Cancel command: {}", cmdLine);
killExecutor.execute(cmdLine);
TaskEvent taskEvent = (TaskEvent) message.taskEvent;
String outPath = agentConfig.getJob().getOutPath(taskEvent.getJobName(), message.jobId);
String errPath = agentConfig.getJob().getErrorPath(taskEvent.getJobName(), message.jobId);
Worker.Result result = new Worker.Result(-9, agentConfig.getUrl(errPath), agentConfig.getUrl(outPath), null, message);
getSender().tell(new Worker.WorkFailed(result), getSelf());
} catch (IOException e) {
log.error(e, "Error cancelling job");
}
}
}