Commit 1e100677 authored by Andy Wilkinson's avatar Andy Wilkinson

Reduce scope of META-INF customizations to main, source, and javadoc jars

Closes gh-23955
parent 49ea023a
...@@ -18,6 +18,7 @@ package org.springframework.boot.build; ...@@ -18,6 +18,7 @@ package org.springframework.boot.build;
import java.io.File; import java.io.File;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
...@@ -106,19 +107,25 @@ class JavaConventions { ...@@ -106,19 +107,25 @@ class JavaConventions {
.collect(Collectors.toSet()); .collect(Collectors.toSet());
Set<String> javadocJarTaskNames = sourceSets.stream().map(SourceSet::getJavadocJarTaskName) Set<String> javadocJarTaskNames = sourceSets.stream().map(SourceSet::getJavadocJarTaskName)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
project.getTasks().withType(Jar.class, (jar) -> project.afterEvaluate((evaluated) -> { Set<String> jarTaskNames = sourceSets.stream().map(SourceSet::getJarTaskName).collect(Collectors.toSet());
jar.metaInf((metaInf) -> metaInf.from(extractLegalResources)); Set<String> jarTasksOfInterest = new HashSet<String>();
jar.manifest((manifest) -> { jarTasksOfInterest.addAll(sourceJarTaskNames);
Map<String, Object> attributes = new TreeMap<>(); jarTasksOfInterest.addAll(javadocJarTaskNames);
attributes.put("Automatic-Module-Name", project.getName().replace("-", ".")); jarTasksOfInterest.addAll(jarTaskNames);
attributes.put("Build-Jdk-Spec", project.property("sourceCompatibility")); project.getTasks().matching((task) -> jarTasksOfInterest.contains(task.getName())).withType(Jar.class,
attributes.put("Built-By", "Spring"); (jar) -> project.afterEvaluate((evaluated) -> {
attributes.put("Implementation-Title", jar.metaInf((metaInf) -> metaInf.from(extractLegalResources));
determineImplementationTitle(project, sourceJarTaskNames, javadocJarTaskNames, jar)); jar.manifest((manifest) -> {
attributes.put("Implementation-Version", project.getVersion()); Map<String, Object> attributes = new TreeMap<>();
manifest.attributes(attributes); attributes.put("Automatic-Module-Name", project.getName().replace("-", "."));
}); attributes.put("Build-Jdk-Spec", project.property("sourceCompatibility"));
})); attributes.put("Built-By", "Spring");
attributes.put("Implementation-Title",
determineImplementationTitle(project, sourceJarTaskNames, javadocJarTaskNames, jar));
attributes.put("Implementation-Version", project.getVersion());
manifest.attributes(attributes);
});
}));
} }
private String determineImplementationTitle(Project project, Set<String> sourceJarTaskNames, private String determineImplementationTitle(Project project, Set<String> sourceJarTaskNames,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment