Handle missing manifest files in JarTypeFilter

This commit makes sure that a jar file without a manifest is handled
properly (i.e. included in the repackaged archive).

See gh-24597
This commit is contained in:
Rob Edwards
2020-12-22 13:43:03 -07:00
committed by Stephane Nicoll
parent e8a936dfd9
commit 86eecb01b3
2 changed files with 23 additions and 2 deletions

View File

@@ -20,8 +20,10 @@ import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
import org.apache.maven.artifact.Artifact;
@@ -43,8 +45,9 @@ class JarTypeFilter extends DependencyFilter {
@Override
protected boolean filter(Artifact artifact) {
try (JarFile jarFile = new JarFile(artifact.getFile())) {
String jarType = jarFile.getManifest().getMainAttributes().getValue("Spring-Boot-Jar-Type");
return jarType != null && EXCLUDED_JAR_TYPES.contains(jarType);
return Optional.ofNullable(jarFile.getManifest()).map(Manifest::getMainAttributes)
.map((attributes) -> attributes.getValue("Spring-Boot-Jar-Type")).map(EXCLUDED_JAR_TYPES::contains)
.orElse(Boolean.FALSE);
}
catch (IOException ex) {
return false;