String classpath = manifestClasspath(sourceDirectory, outputDirectory, compileClasspathElements);
final String javaExecutable = getJavaExecutable();
getLog().debug("Java exectuable used: " + javaExecutable);
getLog().debug("Clojure manifest classpath: " + classpath);
CommandLine cl = null;
if (ExecutionMode.INTERACTIVE == executionMode && SystemUtils.IS_OS_WINDOWS && spawnInteractiveConsoleOnWindows) {
Scanner sc = new Scanner(windowsConsole);
Pattern pattern = Pattern.compile("\"[^\"]*\"|'[^']*'|[\\w'/]+");
cl = new CommandLine(sc.findInLine(pattern));
String param;
while ((param = sc.findInLine(pattern)) != null) {
cl.addArgument(param);
}
cl.addArgument(javaExecutable);
} else {
cl = new CommandLine(javaExecutable);
}
if (vmargs != null) {
cl.addArguments(vmargs, false);
}
cl.addArgument("-Dclojure.compile.path=" + escapeFilePath(outputDirectory), false);
if (warnOnReflection) cl.addArgument("-Dclojure.compile.warn-on-reflection=true");
cl.addArguments(clojureOptions, false);
cl.addArgument("-jar");
File jar;
if (prependClasses != null && prependClasses.size() > 0) {
jar = createJar(classpath, prependClasses.get(0));
cl.addArgument(jar.getAbsolutePath(), false);
List<String> allButFirst = prependClasses.subList(1, prependClasses.size());
cl.addArguments(allButFirst.toArray(new String[allButFirst.size()]));
cl.addArgument(mainClass);
} else {
jar = createJar(classpath, mainClass);
cl.addArgument(jar.getAbsolutePath(), false);
}
if (clojureArgs != null) {
cl.addArguments(clojureArgs, false);
}
getLog().debug("Command line: " + cl.toString());
Executor exec = new DefaultExecutor();
Map<String, String> env = new HashMap<String, String>(System.getenv());
// env.put("path", ";");
// env.put("path", System.getProperty("java.home"));