public PersistedToolchains discoverToolchains()

in src/main/java/org/apache/maven/plugins/toolchain/jdk/ToolchainDiscoverer.java [132:175]


    public PersistedToolchains discoverToolchains(String comparator) {
        try {
            Set<Path> jdks = findJdks();
            log.info("Found " + jdks.size() + " possible jdks: " + jdks);
            readCache();
            Map<Path, Map<String, String>> flags = new HashMap<>();
            Path currentJdkHome = getCanonicalPath(Paths.get(System.getProperty(JAVA_HOME)));
            flags.computeIfAbsent(currentJdkHome, p -> new HashMap<>()).put(CURRENT, "true");
            // check environment variables for JAVA{xx}_HOME
            System.getenv().entrySet().stream()
                    .filter(e -> e.getKey().startsWith("JAVA") && e.getKey().endsWith("_HOME"))
                    .forEach(e -> {
                        Path path = getCanonicalPath(Paths.get(e.getValue()));
                        Map<String, String> f = flags.computeIfAbsent(path, p -> new HashMap<>());
                        String val = f.getOrDefault(ENV, "");
                        f.put(ENV, (val.isEmpty() ? "" : val + ",") + e.getKey());
                    });

            List<ToolchainModel> tcs = jdks.parallelStream()
                    .map(s -> {
                        ToolchainModel tc = getToolchainModel(s);
                        flags.getOrDefault(s, Collections.emptyMap())
                                .forEach((k, v) -> tc.getProvides().setProperty(k, v));
                        String version = tc.getProvides().getProperty(VERSION);
                        if (isLts(version)) {
                            tc.getProvides().setProperty(LTS, "true");
                        }
                        return tc;
                    })
                    .sorted(getToolchainModelComparator(comparator))
                    .collect(Collectors.toList());
            writeCache();
            PersistedToolchains ps = new PersistedToolchains();
            ps.setToolchains(tcs);
            return ps;
        } catch (Exception e) {
            if (log.isDebugEnabled()) {
                log.warn("Error discovering toolchains: " + e, e);
            } else {
                log.warn("Error discovering toolchains (enable debug level for more information): " + e);
            }
            return new PersistedToolchains();
        }
    }