private void configureExtensions()

in app-gradle-plugin/src/main/java/com/google/cloud/tools/gradle/appengine/standard/AppEngineStandardPlugin.java [83:136]


  private void configureExtensions() {

    // create the run extension and set defaults.
    runExtension = appengineExtension.getRun();
    runExtension.setStartSuccessTimeout(20);
    runExtension.setServices(explodedWarDir);
    runExtension.setServerVersion("1");

    // create the stage extension and set defaults.
    stageExtension = appengineExtension.getStage();
    File defaultStagedAppDir = new File(project.getBuildDir(), STAGED_APP_DIR_NAME);
    stageExtension.setSourceDirectory(explodedWarDir);
    stageExtension.setStagingDirectory(defaultStagedAppDir);

    project.afterEvaluate(
        project -> {
          // tools extension required to initialize cloudSdkOperations
          ToolsExtension tools = appengineExtension.getTools();
          try {
            cloudSdkOperations =
                new CloudSdkOperations(tools.getCloudSdkHome(), null, tools.getVerbosity());
          } catch (CloudSdkNotFoundException ex) {
            // this should be caught in AppEngineCorePluginConfig before it can ever reach here.
            throw new GradleException("Could not find CloudSDK: ", ex);
          }

          DeployExtension deploy = appengineExtension.getDeploy();
          if (deploy.getAppEngineDirectory() == null) {
            deploy.setAppEngineDirectory(
                new File(stageExtension.getStagingDirectory(), "WEB-INF/appengine-generated"));
          }

          DeployAllTask deployAllTask =
              (DeployAllTask)
                  project
                      .getTasks()
                      .getByName(AppEngineCorePluginConfiguration.DEPLOY_ALL_TASK_NAME);
          deployAllTask.setStageDirectory(stageExtension.getStagingDirectory());
          deployAllTask.setDeployExtension(deploy);

          DeployTask deployTask =
              (DeployTask)
                  project.getTasks().getByName(AppEngineCorePluginConfiguration.DEPLOY_TASK_NAME);
          deployTask.setDeployConfig(deploy);
          deployTask.setAppYaml(stageExtension.getStagingDirectory().toPath().resolve("app.yaml"));

          // configure the runExtension's project parameter
          // assign the run projectId to the deploy projectId if none is specified
          if (Strings.isNullOrEmpty(runExtension.getProjectId())) {
            runExtension.setProjectId(deploy.getProjectId());
          }
          runExtension.setDeployTargetResolver(new DeployTargetResolver(cloudSdkOperations));
        });
  }