public void executeGoals()

in maven-release-manager/src/main/java/org/apache/maven/shared/release/exec/ForkedMavenExecutor.java [65:157]


    public void executeGoals(
            File workingDirectory,
            List<String> goals,
            ReleaseEnvironment releaseEnvironment,
            boolean interactive,
            String additionalArguments,
            String pomFileName,
            ReleaseResult relResult)
            throws MavenExecutorException {
        String mavenPath;
        // if null we use the current one
        if (releaseEnvironment.getMavenHome() != null) {
            mavenPath = releaseEnvironment.getMavenHome().getAbsolutePath();
        } else {
            mavenPath = System.getProperty("maven.home");
        }

        File settingsFile = null;
        if (releaseEnvironment.getSettings() != null) {
            // Have to serialize to a file as if Maven is embedded, there may not actually be a settings.xml on disk
            try {
                settingsFile = Files.createTempFile("release-settings", ".xml").toFile();
                SettingsXpp3Writer writer = getSettingsWriter();

                try (FileWriter fileWriter = new FileWriter(settingsFile)) {
                    writer.write(fileWriter, encryptSettings(releaseEnvironment.getSettings()));
                }
            } catch (IOException e) {
                throw new MavenExecutorException("Could not create temporary file for release settings.xml", e);
            }
        }
        try {

            Commandline cl =
                    commandLineFactory.createCommandLine(mavenPath + File.separator + "bin" + File.separator + "mvn");

            cl.setWorkingDirectory(workingDirectory.getAbsolutePath());

            // FIX for MRELEASE-1105
            // cl.addEnvironment( "MAVEN_DEBUG_OPTS", "" );

            cl.addEnvironment("MAVEN_TERMINATE_CMD", "on");

            if (releaseEnvironment.getJavaHome() != null) {
                cl.addEnvironment("JAVA_HOME", releaseEnvironment.getJavaHome().getAbsolutePath());
            }

            if (settingsFile != null) {
                cl.createArg().setValue("-s");
                cl.createArg().setFile(settingsFile);
            }

            if (pomFileName != null) {
                cl.createArg().setValue("-f");
                cl.createArg().setValue(pomFileName);
            }

            for (String goal : goals) {
                cl.createArg().setValue(goal);
            }

            if (!interactive) {
                cl.createArg().setValue("--batch-mode");
            }

            if (!(additionalArguments == null || additionalArguments.isEmpty())) {
                cl.createArg().setLine(additionalArguments);
            }

            TeeOutputStream stdOut = new TeeOutputStream(System.out);

            TeeOutputStream stdErr = new TeeOutputStream(System.err);

            try {
                relResult.appendInfo("Executing: " + cl);
                getLogger().info("Executing: " + cl);

                int result = executeCommandLine(cl, System.in, stdOut, stdErr);

                if (result != 0) {
                    throw new MavenExecutorException("Maven execution failed, exit code: '" + result + "'", result);
                }
            } catch (CommandLineException e) {
                throw new MavenExecutorException("Can't run goal " + goals, e);
            } finally {
                relResult.appendOutput(stdOut.toString());
            }
        } finally {
            if (settingsFile != null && settingsFile.exists() && !settingsFile.delete()) {
                settingsFile.deleteOnExit();
            }
        }
    }