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();
}
}