public void run()

in appengine-plugins-core/src/main/java/com/google/cloud/tools/appengine/operations/DevServer.java [69:152]


  public void run(RunConfiguration config) throws AppEngineException {
    Preconditions.checkNotNull(config);
    Preconditions.checkNotNull(config.getServices());
    Preconditions.checkArgument(config.getServices().size() > 0);
    List<String> arguments = new ArrayList<>();

    List<String> jvmArguments = new ArrayList<>();
    arguments.addAll(DevAppServerArgs.get("address", config.getHost()));
    arguments.addAll(DevAppServerArgs.get("port", config.getPort()));
    if (Boolean.TRUE.equals(config.getAutomaticRestart())) {
      jvmArguments.add("-Dappengine.fullscan.seconds=1");
    }
    if (config.getJvmFlags() != null) {
      jvmArguments.addAll(config.getJvmFlags());
    }

    // Check if the RunConfiguration has the Project JDK Version defined first
    // The custom value takes priority over the System Property
    String jdkVersionString = config.getProjectJdkVersion();
    if (jdkVersionString == null) {
      jdkVersionString = JAVA_SPECIFICATION_VERSION.value();
    }
    int jdkVersion = getJdkMajorVersion(jdkVersionString);
    log.config(
        String.format("JDK Version found: %s, Parsed to be %d", jdkVersionString, jdkVersion));
    if (jdkVersion > 8) {
      addJpmsRestrictionArguments(jvmArguments);
    }

    arguments.addAll(DevAppServerArgs.get("default_gcs_bucket", config.getDefaultGcsBucketName()));
    arguments.addAll(DevAppServerArgs.get("application", config.getProjectId()));

    arguments.add("--allow_remote_shutdown");
    arguments.add("--disable_update_check");
    List<String> additionalArguments = config.getAdditionalArguments();
    if (additionalArguments != null) {
      arguments.addAll(additionalArguments);
    }

    boolean isSandboxEnforced = isSandboxEnforced(config.getServices());

    if (!isSandboxEnforced) {
      jvmArguments.add("-Duse_jetty9_runtime=true");
      jvmArguments.add("-D--enable_all_permissions=true");
      arguments.add("--no_java_agent");
    } else {
      // Add in the appengine agent
      String appengineAgentJar =
          sdk.getAppEngineSdkForJavaPath()
              .resolve("agent/appengine-agent.jar")
              .toAbsolutePath()
              .toString();
      jvmArguments.add("-javaagent:" + appengineAgentJar);
    }
    for (Path service : config.getServices()) {
      arguments.add(service.toString());
    }

    Map<String, String> appEngineEnvironment =
        getAllAppEngineWebXmlEnvironmentVariables(config.getServices());
    if (!appEngineEnvironment.isEmpty()) {
      log.info(
          "Setting appengine-web.xml configured environment variables: "
              + Joiner.on(",").withKeyValueSeparator("=").join(appEngineEnvironment));
    }

    String gaeRuntime = getGaeRuntimeJava(!isSandboxEnforced);
    appEngineEnvironment.putAll(getLocalAppEngineEnvironmentVariables(gaeRuntime));

    Map<String, String> configEnvironment = config.getEnvironment();
    if (configEnvironment != null) {
      appEngineEnvironment.putAll(configEnvironment);
    }

    try {
      Path workingDirectory = null;
      if (config.getServices().size() == 1) {
        workingDirectory = config.getServices().get(0);
      }
      runner.run(jvmArguments, arguments, appEngineEnvironment, workingDirectory);
    } catch (ProcessHandlerException | IOException ex) {
      throw new AppEngineException(ex);
    }
  }