in maven-resolver-tools/src/main/java/org/eclipse/aether/tools/CollectConfiguration.java [100:150]
public Integer call() {
try {
rootDirectory = rootDirectory.toAbsolutePath().normalize();
outputDirectory = outputDirectory.toAbsolutePath().normalize();
ArrayList<Map<String, String>> discoveredKeys = new ArrayList<>();
try (Stream<Path> stream = Files.walk(rootDirectory)) {
if (mode == Mode.maven) {
System.out.println("Processing Maven sources from " + rootDirectory);
stream.map(Path::toAbsolutePath)
.filter(p -> p.getFileName().toString().endsWith(".class"))
.filter(p -> p.toString().contains("/target/classes/"))
.forEach(p -> {
processMavenClass(p, discoveredKeys);
});
} else if (mode == Mode.resolver) {
System.out.println("Processing Resolver sources from " + rootDirectory);
stream.map(Path::toAbsolutePath)
.filter(p -> p.getFileName().toString().endsWith(".java"))
.filter(p -> p.toString().contains("/src/main/java/"))
.filter(p -> !p.toString().endsWith("/module-info.java"))
.forEach(p -> processResolverClass(p, discoveredKeys));
} else {
throw new IllegalStateException("Unsupported mode " + mode);
}
}
discoveredKeys.sort(Comparator.comparing(e -> e.get(KEY)));
Properties properties = new Properties();
properties.setProperty("resource.loaders", "classpath");
properties.setProperty("resource.loader.classpath.class", ClasspathResourceLoader.class.getName());
VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.init(properties);
VelocityContext context = new VelocityContext();
context.put("keys", discoveredKeys);
for (String template : templates) {
Path output = outputDirectory.resolve(template);
System.out.println("Writing out to " + output);
try (Writer fileWriter = new CachingWriter(output, StandardCharsets.UTF_8)) {
velocityEngine.getTemplate(template + ".vm").merge(context, fileWriter);
}
}
return 0;
} catch (Exception e) {
e.printStackTrace(System.err);
return 1;
}
}