private boolean runBuild()

in src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java [1788:1887]


    private boolean runBuild(
            File basedir,
            File pomFile,
            File settingsFile,
            File actualJavaHome,
            InvokerProperties invokerProperties,
            FileLogger logger)
            throws MojoExecutionException, RunFailureException {
        if (getLog().isDebugEnabled() && !invokerProperties.getProperties().isEmpty()) {
            Properties props = invokerProperties.getProperties();
            getLog().debug("Using invoker properties:");
            for (String key : new TreeSet<>(props.stringPropertyNames())) {
                String value = props.getProperty(key);
                getLog().debug("  " + key + " = " + value);
            }
        }

        Map<String, Object> context = new LinkedHashMap<>();

        boolean selectorResult = true;

        try {
            try {
                scriptRunner.run("selector script", basedir, selectorScript, context, logger);
            } catch (ScriptReturnException e) {
                selectorResult = false;
                return false;
            } catch (ScriptException e) {
                throw new RunFailureException(BuildJob.Result.ERROR, e);
            }

            try {
                scriptRunner.run("pre-build script", basedir, preBuildHookScript, context, logger);
            } catch (ScriptException e) {
                throw new RunFailureException(BuildJob.Result.FAILURE_PRE_HOOK, e);
            }

            for (int invocationIndex = 1; ; invocationIndex++) {
                if (invocationIndex > 1 && !invokerProperties.isInvocationDefined(invocationIndex)) {
                    break;
                }

                final InvocationRequest request = new DefaultInvocationRequest();

                request.setBatchMode(true);

                // values only from Mojo configurations
                request.setLocalRepositoryDirectory(localRepositoryPath);
                request.setShowErrors(showErrors);
                request.setShowVersion(showVersion);
                request.setJavaHome(actualJavaHome);
                request.setMavenHome(mavenHome);
                setupLoggerForBuildJob(logger, request);

                request.setBaseDirectory(basedir);
                request.setPomFile(pomFile);

                String customSettingsFile = invokerProperties.getSettingsFile(invocationIndex);
                if (customSettingsFile != null) {
                    File interpolateSettingsFile = interpolateSettings(new File(customSettingsFile));
                    File mergeSettingsFile = mergeSettings(interpolateSettingsFile);

                    request.setUserSettingsFile(mergeSettingsFile);
                } else {
                    request.setUserSettingsFile(settingsFile);
                }

                Properties systemProperties =
                        getSystemProperties(basedir, invokerProperties.getSystemPropertiesFile(invocationIndex));
                request.setProperties(systemProperties);

                invokerProperties.configureInvocation(request, invocationIndex);

                if (getLog().isDebugEnabled()) {
                    try {
                        getLog().debug("Using MAVEN_OPTS: " + request.getMavenOpts());
                        getLog().debug("Executing: " + new MavenCommandLineBuilder().build(request));
                    } catch (CommandLineConfigurationException e) {
                        getLog().debug("Failed to display command line: " + e.getMessage());
                    }
                }

                try {
                    InvocationResult result = invoker.execute(request);
                    verify(result, invocationIndex, invokerProperties, logger);
                } catch (final MavenInvocationException e) {
                    getLog().debug("Error invoking Maven: " + e.getMessage(), e);
                    throw new RunFailureException(
                            "Maven invocation failed. " + e.getMessage(), BuildJob.Result.FAILURE_BUILD);
                }
            }
        } catch (IOException e) {
            throw new MojoExecutionException(e.getMessage(), e);
        } finally {
            if (selectorResult) {
                runPostBuildHook(basedir, context, logger);
            }
        }
        return true;
    }