private boolean runBuild()

in src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java [1850:1937]


    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<>();
        Properties scriptUserProperties = new Properties();
        context.put("userProperties", scriptUserProperties);

        if (!runSelectorHook(basedir, context, logger)) {
            return false;
        }

        try {
            runPreBuildHook(basedir, context, logger);

            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 userProperties =
                        getUserProperties(basedir, invokerProperties.getUserPropertiesFile(invocationIndex));
                userProperties.putAll(scriptUserProperties);
                request.setProperties(userProperties);

                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);
                }
            }
        } finally {
            runPostBuildHook(basedir, context, logger);
        }
        return true;
    }