in winegrower-extension/winegrower-build/winegrower-maven-plugin/src/main/java/org/apache/winegrower/extension/build/maven/MetadataBuilderMojo.java [44:83]
public void execute() {
final MetadataBuilder metadataBuilder = new MetadataBuilder(autoFiltering);
final Set<String> alreadyAdded = new HashSet<>();
collectJars().forEach(jar -> {
if (jar.isDirectory()) {
metadataBuilder.visitFolder(getProjectArtifactName(), jar.toPath(), new SimpleFileVisitor<Path>() {});
} else {
try (final JarInputStream inputStream = new JarInputStream(new BufferedInputStream(new FileInputStream(jar)))) {
metadataBuilder.onJar(jar.getName(), inputStream.getManifest());
ZipEntry nextEntry;
while ((nextEntry = inputStream.getNextEntry()) != null) {
final String name = nextEntry.getName();
if (!alreadyAdded.add(name)) {
continue;
}
metadataBuilder.onFile(name);
}
} catch (final IOException e) {
throw new IllegalStateException(e);
}
metadataBuilder.afterJar();
}
});
metadataBuilder.getMetadata().forEach((key, value) -> {
final Path target = output.toPath().resolve(String.format(namingPattern, key));
try {
if (!Files.exists(target.getParent())) {
Files.createDirectories(target.getParent());
}
try (final OutputStream out = Files.newOutputStream(target)) {
value.store(out, "index");
}
getLog().info("Generated '" + target + "'");
} catch (final IOException ioe) {
throw new IllegalStateException(ioe);
}
});
}