private void doExecute()

in src/main/java/org/apache/maven/plugins/toolchain/jdk/SelectJdkToolchainMojo.java [170:231]


    private void doExecute() throws MisconfiguredToolchainException, MojoFailureException {
        if (version == null && runtimeName == null && runtimeVersion == null && vendor == null && env == null) {
            return;
        }

        Map<String, String> requirements = new HashMap<>();
        Optional.ofNullable(version).ifPresent(v -> requirements.put(VERSION, v));
        Optional.ofNullable(runtimeName).ifPresent(v -> requirements.put(RUNTIME_NAME, v));
        Optional.ofNullable(runtimeVersion).ifPresent(v -> requirements.put(RUNTIME_VERSION, v));
        Optional.ofNullable(vendor).ifPresent(v -> requirements.put(VENDOR, v));
        Optional.ofNullable(env).ifPresent(v -> requirements.put(ENV, v));

        ToolchainModel currentJdkToolchainModel =
                discoverer.getCurrentJdkToolchain().orElse(null);
        ToolchainPrivate currentJdkToolchain =
                currentJdkToolchainModel != null ? factory.createToolchain(currentJdkToolchainModel) : null;

        if (useJdk == JdkMode.IfMatch && currentJdkToolchain != null && matches(currentJdkToolchain, requirements)) {
            getLog().info("Not using an external toolchain as the current JDK matches the requirements.");
            return;
        }

        ToolchainPrivate toolchain = Stream.of(toolchainManager.getToolchainsForType(TOOLCHAIN_TYPE_JDK, session))
                .filter(tc -> matches(tc, requirements))
                .findFirst()
                .orElse(null);
        if (toolchain != null) {
            getLog().info("Found matching JDK toolchain: " + toolchain);
        }

        if (toolchain == null && discoverToolchains) {
            getLog().debug("No matching toolchains configured, trying to discover JDK toolchains");
            PersistedToolchains persistedToolchains = discoverer.discoverToolchains(comparator);
            getLog().debug("Discovered " + persistedToolchains.getToolchains().size() + " JDK toolchains");

            for (ToolchainModel tcm : persistedToolchains.getToolchains()) {
                ToolchainPrivate tc = factory.createToolchain(tcm);
                if (tc != null && matches(tc, requirements)) {
                    toolchain = tc;
                    getLog().debug("Discovered matching JDK toolchain: " + toolchain);
                    break;
                }
            }
        }

        if (toolchain == null) {
            throw new MojoFailureException(
                    "Cannot find matching toolchain definitions for the following toolchain types:" + requirements
                            + System.lineSeparator()
                            + "Define the required toolchains in your ~/.m2/toolchains.xml file.");
        }

        if (useJdk == JdkMode.IfSame
                && currentJdkToolchain != null
                && Objects.equals(getJdkHome(currentJdkToolchain), getJdkHome(toolchain))) {
            getLog().debug("Not using an external toolchain as the current JDK has been selected.");
            return;
        }

        toolchainManager.storeToolchainToBuildContext(toolchain, session);
        getLog().debug("Found matching JDK toolchain: " + toolchain);
    }