@Override
    public ProgramCommandLine makeProgramCommandLine() throws RunBuildException {
        List<String> cmd_args = new ArrayList<String>();
        Map<String,String> params = this.getRunnerParameters();

        final String task =
            params.get(DeployerConstants.SETTINGS_TASK);
         final String args =
            params.get(DeployerConstants.SETTINGS_ARGUMENTS);
        final String ant_target =
            params.get(DeployerConstants.SETTINGS_ANT_TARGET);
        final String ant_args =
            params.get(DeployerConstants.SETTINGS_ANT_ARGUMENTS);
        final String exec_command =
            params.get(DeployerConstants.SETTINGS_EXECUTE_COMMAND);
        final String role = 
            params.get(DeployerConstants.SETTINGS_ROLE);
        final String env_variables =
            params.get(DeployerConstants.SETTINGS_ENV_VARIABLES);

        cmd_args.add("-R");
        cmd_args.add(role);
        
        List<String> env_variables_list = parseArgs(env_variables);
        for (int i = 0; i < env_variables_list.size(); i++) {
            cmd_args.add("--set");
            cmd_args.add(env_variables_list.get(i));
        }

        if (task.equals(DeployerConstants.TASK_TYPE_EXECUTE)) {
            cmd_args.add(makeCommandArgs("execute", quote(exec_command)));
        } else if (task.equals(DeployerConstants.TASK_TYPE_ANT)) {
            StringBuilder all_args = new StringBuilder();
            all_args.append(quote(ant_target));
            if (ant_args != null && ant_args.length() > 0) {
                all_args.append(" ");
                all_args.append(ant_args);
            }
            cmd_args.add(makeCommandArgs("ant", all_args.toString()));
        } else {
            cmd_args.add(makeCommandArgs(task, args));
        }

        return this.createProgramCommandline("remotedeploy", cmd_args);
    }