List<String> args = new ArrayList<String>();
args.add("com.google.appengine.tools.development.DevAppServerMain"); // dev app server
String sdkDir = (String) addArg(args, "sdk_root", configuration.getSdkDir(), false);
if (new File(sdkDir).isDirectory() == false)
throw new DeploymentException("SDK root is not a directory: " + sdkDir);
String classpath = System.getProperty("java.class.path");
String toolsJar = sdkDir + "/lib/appengine-tools-api.jar";
if (classpath.contains(toolsJar) == false)
System.setProperty("java.class.path", classpath + File.pathSeparator + toolsJar);
addArg(args, "server", configuration.getServer(), true);
addArg(args, "address", configuration.getAddress(), false);
addArg(args, "port", configuration.getPort(), false);
addArg(args, "startOnFirstThread", configuration.isDisableUpdateCheck(), false);
addArg(args, "disable_update_check", configuration.isStartOnFirstThread());
boolean isJavaAgentSet = (configuration.getJavaAgent() != null);
if (isJavaAgentSet) {
addArg(args, "jvm_flag", "-noverify", false);
addArg(args, "jvm_flag", "-javaagent:" + configuration.getJavaAgent(), false);
}
// TODO -- JVM FLAGS
args.add(getAppLocation().getCanonicalPath());
invokeAppEngine(sdkDir, "com.google.appengine.tools.KickStart", args.toArray(new String[args.size()]));
String serverURL = configuration.getServerTestURL();
if (serverURL == null)
serverURL = "http://localhost:" + configuration.getPort() + "/_ah/admin";
delayArchiveDeploy(serverURL, configuration.getStartupTimeout(), 1000L);
return getProtocolMetaData(configuration.getAddress(), configuration.getPort(), archive);
} catch (Exception e) {
throw new DeploymentException("Cannot deploy to local GAE.", e);
}
}