From 1e100677c722db4f9839d39d4b104307d4917cc9 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 5 Nov 2020 14:58:54 +0000 Subject: [PATCH] Reduce scope of META-INF customizations to main, source, and javadoc jars Closes gh-23955 --- .../boot/build/JavaConventions.java | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java b/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java index 5a9fecc81aa..5079d684d81 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java @@ -18,6 +18,7 @@ package org.springframework.boot.build; import java.io.File; import java.util.Arrays; import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -106,19 +107,25 @@ class JavaConventions { .collect(Collectors.toSet()); Set javadocJarTaskNames = sourceSets.stream().map(SourceSet::getJavadocJarTaskName) .collect(Collectors.toSet()); - project.getTasks().withType(Jar.class, (jar) -> project.afterEvaluate((evaluated) -> { - jar.metaInf((metaInf) -> metaInf.from(extractLegalResources)); - jar.manifest((manifest) -> { - Map attributes = new TreeMap<>(); - 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); - }); - })); + Set jarTaskNames = sourceSets.stream().map(SourceSet::getJarTaskName).collect(Collectors.toSet()); + Set jarTasksOfInterest = new HashSet(); + jarTasksOfInterest.addAll(sourceJarTaskNames); + jarTasksOfInterest.addAll(javadocJarTaskNames); + jarTasksOfInterest.addAll(jarTaskNames); + project.getTasks().matching((task) -> jarTasksOfInterest.contains(task.getName())).withType(Jar.class, + (jar) -> project.afterEvaluate((evaluated) -> { + jar.metaInf((metaInf) -> metaInf.from(extractLegalResources)); + jar.manifest((manifest) -> { + Map attributes = new TreeMap<>(); + 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 sourceJarTaskNames,