in core/bootstrap/src/main/java/org/wildfly/swarm/bootstrap/env/ApplicationEnvironment.java [248:306]
private void loadFractionManifests(ClassLoader cl) throws IOException {
if (this.manifests != null) {
return;
}
this.manifests = new ArrayList<>();
Enumeration<URL> results = cl.getResources(FractionManifest.CLASSPATH_LOCATION);
Set<MavenArtifactDescriptor> fractionDependencies = new HashSet<>();
while (results.hasMoreElements()) {
URL each = results.nextElement();
FractionManifest manifest = new FractionManifest(each);
this.manifests.add(manifest);
if (manifest.getModule() != null) {
this.bootstrapModules.add(manifest.getModule());
}
if (this.mode == Mode.CLASSPATH) {
MavenArtifactDescriptor fraction = new MavenArtifactDescriptor(
manifest.getGroupId(),
manifest.getArtifactId(),
manifest.getVersion()
);
if (dependencyTree.isPresent()) {
for (MavenArtifactDescriptor directDep : dependencyTree.get().getDirectDeps()) {
if (fraction.equals(directDep)) {
fractionDependencies.add(directDep);
}
}
}
this.removeableDependencies.add(fraction.mavenGav());
this.removeableDependencies.addAll(manifest.getDependencies());
}
}
if (dependencyTree.isPresent()) {
Set<String> applicationDependencies = new HashSet<>();
Set<MavenArtifactDescriptor> keep = new HashSet<>(dependencyTree.get().getDirectDeps());
keep.removeAll(fractionDependencies);
for (MavenArtifactDescriptor dep : keep) {
// the dep itself
applicationDependencies.add(dep.mavenGav());
// it's transient dependencies
applicationDependencies.addAll(dependencyTree.get().getTransientDeps(dep).stream().map(t -> t.mavenGav()).collect(Collectors.toList()));
}
this.removeableDependencies.removeAll(applicationDependencies);
}
}