diff --git a/build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JarTypeFileSpec.java b/build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JarTypeFileSpec.java index eab3f3d2473..ca1b75877d0 100644 --- a/build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JarTypeFileSpec.java +++ b/build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JarTypeFileSpec.java @@ -17,7 +17,6 @@ package org.springframework.boot.gradle.plugin; import java.io.File; -import java.util.Collections; import java.util.Set; import java.util.jar.JarFile; @@ -33,7 +32,7 @@ import org.gradle.api.specs.Spec; */ class JarTypeFileSpec implements Spec { - private static final Set EXCLUDED_JAR_TYPES = Collections.singleton("dependencies-starter"); + private static final Set EXCLUDED_JAR_TYPES = Set.of("dependencies-starter", "development-tool"); @Override public boolean isSatisfiedBy(File file) { diff --git a/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveIntegrationTests.java b/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveIntegrationTests.java index 43c30e37f2a..42ad5f82845 100644 --- a/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveIntegrationTests.java +++ b/build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveIntegrationTests.java @@ -283,6 +283,7 @@ abstract class AbstractBootArchiveIntegrationTests { void jarTypeFilteringIsApplied() throws IOException { File flatDirRepository = new File(this.gradleBuild.getProjectDir(), "repository"); createDependenciesStarterJar(new File(flatDirRepository, "starter.jar")); + createDependenciesDeveloperToolsJar(new File(flatDirRepository, "devonly.jar")); createStandardJar(new File(flatDirRepository, "standard.jar")); assertThat(this.gradleBuild.build(this.taskName).task(":" + this.taskName).getOutcome()) .isEqualTo(TaskOutcome.SUCCESS); @@ -659,6 +660,10 @@ abstract class AbstractBootArchiveIntegrationTests { createJar(location, (attributes) -> attributes.putValue("Spring-Boot-Jar-Type", "dependencies-starter")); } + private void createDependenciesDeveloperToolsJar(File location) throws IOException { + createJar(location, (attributes) -> attributes.putValue("Spring-Boot-Jar-Type", "development-tool")); + } + private void createJar(File location, Consumer attributesConfigurer) throws IOException { location.getParentFile().mkdirs(); Manifest manifest = new Manifest(); diff --git a/build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/JarTypeFilter.java b/build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/JarTypeFilter.java index c9b0765ebaf..445debcb673 100644 --- a/build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/JarTypeFilter.java +++ b/build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/JarTypeFilter.java @@ -34,8 +34,8 @@ import org.apache.maven.artifact.Artifact; */ class JarTypeFilter extends DependencyFilter { - private static final Set EXCLUDED_JAR_TYPES = Collections - .unmodifiableSet(new HashSet<>(Arrays.asList("annotation-processor", "dependencies-starter"))); + private static final Set EXCLUDED_JAR_TYPES = Collections.unmodifiableSet( + new HashSet<>(Arrays.asList("annotation-processor", "dependencies-starter", "development-tool"))); JarTypeFilter() { super(Collections.emptyList()); diff --git a/build-plugin/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/JarTypeFilterTests.java b/build-plugin/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/JarTypeFilterTests.java index 382dca1d30f..39e60b53751 100644 --- a/build-plugin/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/JarTypeFilterTests.java +++ b/build-plugin/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/JarTypeFilterTests.java @@ -60,6 +60,11 @@ class JarTypeFilterTests { assertThat(new JarTypeFilter().filter(createArtifact("annotation-processor"))).isTrue(); } + @Test + void whenArtifactHasDevelopmentToolJarTypeThenItIsExcluded() { + assertThat(new JarTypeFilter().filter(createArtifact("development-tool"))).isTrue(); + } + @Test void whenArtifactHasNoManifestFileThenItIsIncluded() { assertThat(new JarTypeFilter().filter(createArtifactWithNoManifest())).isFalse();