in src/main/java/org/apache/maven/plugin/compiler/SourceDirectory.java [275:305]
static List<SourceDirectory> fromProject(
Stream<SourceRoot> compileSourceRoots, String defaultRelease, Path outputDirectory) {
var release = parse(defaultRelease); // May be null.
var roots = new ArrayList<SourceDirectory>();
compileSourceRoots.forEach((SourceRoot source) -> {
Path directory = source.directory();
if (Files.exists(directory)) {
var fileKind = JavaFileObject.Kind.OTHER;
var outputFileKind = JavaFileObject.Kind.OTHER;
if (Language.JAVA_FAMILY.equals(source.language())) {
fileKind = JavaFileObject.Kind.SOURCE;
outputFileKind = JavaFileObject.Kind.CLASS;
}
roots.add(new SourceDirectory(
directory,
source.includes(),
source.excludes(),
fileKind,
source.module().orElse(null),
targetVersion(source).orElse(release),
outputDirectory,
outputFileKind));
}
});
roots.stream()
.map((dir) -> dir.release)
.filter(Objects::nonNull)
.min(SourceVersion::compareTo)
.ifPresent((baseVersion) -> roots.forEach((dir) -> dir.completeIfVersioned(baseVersion)));
return roots;
}