private void runBuild()

in src/main/java/org/apache/maven/plugins/invoker/AbstractInvokerMojo.java [1558:1674]


    private void runBuild(
            File projectsDir,
            BuildJob buildJob,
            File settingsFile,
            File actualJavaHome,
            CharSequence actualJreVersion,
            Properties globalInvokerProperties)
            throws MojoExecutionException {
        // FIXME: Think about the following code part -- START
        File pomFile = new File(projectsDir, buildJob.getProject());
        File basedir;
        if (pomFile.isDirectory()) {
            basedir = pomFile;
            pomFile = new File(basedir, "pom.xml");
            if (!pomFile.exists()) {
                pomFile = null;
            } else {
                buildJob.setProject(buildJob.getProject() + File.separator + "pom.xml");
            }
        } else {
            basedir = pomFile.getParentFile();
        }

        File interpolatedPomFile = interpolatePomFile(pomFile, basedir);
        // FIXME: Think about the following code part -- ^^^^^^^ END

        getLog().info(buffer().a("Building: ").strong(buildJob.getProject()).build());

        InvokerProperties invokerProperties = getInvokerProperties(basedir, globalInvokerProperties);

        // let's set what details we can
        buildJob.setName(invokerProperties.getJobName());
        buildJob.setDescription(invokerProperties.getJobDescription());

        try {
            int selection = getSelection(invokerProperties, actualJreVersion);
            if (selection == 0) {
                long startTime = System.currentTimeMillis();
                boolean executed;

                FileLogger buildLogger = setupBuildLogFile(basedir);
                if (buildLogger != null) {
                    buildJob.setBuildlog(buildLogger.getOutputFile().getAbsolutePath());
                }

                try {
                    executed = runBuild(
                            basedir, interpolatedPomFile, settingsFile, actualJavaHome, invokerProperties, buildLogger);
                } finally {
                    long elapsedTime = System.currentTimeMillis() - startTime;
                    buildJob.setTime(elapsedTime / ONE_SECOND);

                    if (buildLogger != null) {
                        buildLogger.close();
                    }
                }

                if (executed) {
                    buildJob.setResult(BuildJob.Result.SUCCESS);

                    if (!suppressSummaries) {
                        getLog().info(pad(buildJob).success("SUCCESS").a(' ') + "("
                                + formatElapsedTime(buildJob.getTime()) + ")");
                    }
                } else {
                    buildJob.setResult(BuildJob.Result.SKIPPED);

                    if (!suppressSummaries) {
                        getLog().info(pad(buildJob).warning("SKIPPED").a(' ') + "("
                                + formatElapsedTime(buildJob.getTime()) + ")");
                    }
                }
            } else {
                buildJob.setResult(BuildJob.Result.SKIPPED);

                List<String> messages = new ArrayList<>();

                if (selection == Selector.SELECTOR_MULTI) {
                    messages.add("non-matching selectors");
                } else {
                    if ((selection & Selector.SELECTOR_MAVENVERSION) != 0) {
                        messages.add("Maven version");
                    }
                    if ((selection & Selector.SELECTOR_JREVERSION) != 0) {
                        messages.add("JRE version");
                    }
                    if ((selection & Selector.SELECTOR_OSFAMILY) != 0) {
                        messages.add("OS");
                    }
                    if ((selection & Selector.SELECTOR_TOOLCHAIN) != 0) {
                        messages.add("Toolchain");
                    }
                }

                String message = String.join(", ", messages);
                if (!suppressSummaries) {
                    getLog().info(pad(buildJob).warning("SKIPPED") + " due to " + message);
                }

                // Abuse failureMessage, the field in the report which should contain the reason for skipping
                // Consider skipCode + I18N
                buildJob.setFailureMessage("Skipped due to " + message);
            }
        } catch (RunFailureException e) {
            buildJob.setResult(e.getType());
            buildJob.setFailureMessage(e.getMessage());

            if (!suppressSummaries) {
                getLog().info("  " + e.getMessage());
                getLog().info(pad(buildJob).failure("FAILED").a(' ') + "(" + formatElapsedTime(buildJob.getTime())
                        + ")");
            }
        } finally {
            deleteInterpolatedPomFile(interpolatedPomFile);
            writeBuildReport(buildJob);
        }
    }