diff --git a/gradle.properties b/gradle.properties index 22d7baf4a92..28236114ec4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,6 +6,7 @@ org.gradle.jvmargs=-Xmx2g -Dfile.encoding=UTF-8 assertjVersion=3.24.2 commonsCodecVersion=1.16.0 +commonsCompressVersion=1.21 hamcrestVersion=2.2 jacksonVersion=2.15.3 junitJupiterVersion=5.10.1 diff --git a/spring-boot-project/spring-boot-parent/build.gradle b/spring-boot-project/spring-boot-parent/build.gradle index 52b0104b582..8a2bf315f0e 100644 --- a/spring-boot-project/spring-boot-parent/build.gradle +++ b/spring-boot-project/spring-boot-parent/build.gradle @@ -34,13 +34,6 @@ bom { ] } } - library("Commons Compress", "1.21") { - group("org.apache.commons") { - modules = [ - "commons-compress" - ] - } - } library("Commons FileUpload", "1.5") { group("commons-fileupload") { modules = [ diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/build.gradle b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/build.gradle index b99a4c61c3e..f3886f7b847 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/build.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/build.gradle @@ -19,6 +19,17 @@ configurations.all { if (dependency.requested.group.equals("org.springframework")) { dependency.useVersion("6.0.10") } + // We manage the version of commons-compress here rather than + // in spring-boot-parent to minimize conflicts with Testcontainers + if (dependency.requested.group.equals("org.apache.commons") + && dependency.requested.name.equals("commons-compress")) { + dependency.useVersion("$commonsCompressVersion") + } + // Downgrade Testcontainers for compatibility with the managed + // version of Commons Compress. + if (dependency.requested.group.equals("org.testcontainers")) { + dependency.useVersion("1.19.3") + } } } } @@ -27,7 +38,7 @@ dependencies { api("com.fasterxml.jackson.core:jackson-databind") api("com.fasterxml.jackson.module:jackson-module-parameter-names") api("net.java.dev.jna:jna-platform") - api("org.apache.commons:commons-compress") + api("org.apache.commons:commons-compress:$commonsCompressVersion") api("org.apache.httpcomponents.client5:httpclient5") api("org.springframework:spring-core") api("org.tomlj:tomlj:1.0.0") diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/build.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/build.gradle index 35cd303513d..36a2c3b8f6e 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/build.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/build.gradle @@ -28,6 +28,17 @@ configurations { if (dependency.requested.group.equals("org.springframework")) { dependency.useVersion("6.0.10") } + // We manage the version of commons-compress here rather than + // in spring-boot-parent to minimize conflicts with Testcontainers + if (dependency.requested.group.equals("org.apache.commons") + && dependency.requested.name.equals("commons-compress")) { + dependency.useVersion("$commonsCompressVersion") + } + // Downgrade Testcontainers for compatibility with the managed + // version of Commons Compress. + if (dependency.requested.group.equals("org.testcontainers")) { + dependency.useVersion("1.19.3") + } } } } @@ -39,7 +50,7 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-tools:spring-boot-buildpack-platform")) implementation(project(":spring-boot-project:spring-boot-tools:spring-boot-loader-tools")) implementation("io.spring.gradle:dependency-management-plugin") - implementation("org.apache.commons:commons-compress") + implementation("org.apache.commons:commons-compress:$commonsCompressVersion") implementation("org.springframework:spring-core") optional("org.graalvm.buildtools:native-gradle-plugin") diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/build.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/build.gradle index d3df269b1b2..c71fca96a3b 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/build.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-test-support/build.gradle @@ -17,7 +17,7 @@ dependencies { implementation("org.jetbrains.kotlin:kotlin-compiler-embeddable:$kotlinVersion") implementation("org.jetbrains.kotlin:kotlin-compiler-runner:$kotlinVersion") implementation("org.jetbrains.kotlin:kotlin-daemon-client:$kotlinVersion") - implementation("org.apache.commons:commons-compress") + implementation("org.apache.commons:commons-compress:$commonsCompressVersion") implementation("org.assertj:assertj-core") } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-loader-tools/build.gradle b/spring-boot-project/spring-boot-tools/spring-boot-loader-tools/build.gradle index f7968f659d5..7c205340653 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-loader-tools/build.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-loader-tools/build.gradle @@ -29,13 +29,19 @@ configurations { if (dependency.requested.group.equals("org.springframework")) { dependency.useVersion("6.0.10") } + // We manage the version of commons-compress here rather than + // in spring-boot-parent to minimize conflicts with Testcontainers + if (dependency.requested.group.equals("org.apache.commons") + && dependency.requested.name.equals("commons-compress")) { + dependency.useVersion("$commonsCompressVersion") + } } } } } dependencies { - api("org.apache.commons:commons-compress") + api("org.apache.commons:commons-compress:$commonsCompressVersion") api("org.springframework:spring-core") compileOnly("ch.qos.logback:logback-classic") diff --git a/spring-boot-system-tests/spring-boot-image-tests/src/systemTest/java/org/springframework/boot/image/assertions/ImageAssert.java b/spring-boot-system-tests/spring-boot-image-tests/src/systemTest/java/org/springframework/boot/image/assertions/ImageAssert.java index ce326c1702b..fc5f9509412 100644 --- a/spring-boot-system-tests/spring-boot-image-tests/src/systemTest/java/org/springframework/boot/image/assertions/ImageAssert.java +++ b/spring-boot-system-tests/spring-boot-image-tests/src/systemTest/java/org/springframework/boot/image/assertions/ImageAssert.java @@ -80,12 +80,12 @@ public class ImageAssert extends AbstractAssert { this.actual.writeTo(out); try (TarArchiveInputStream in = new TarArchiveInputStream( new ByteArrayInputStream(out.toByteArray()))) { - TarArchiveEntry entry = in.getNextTarEntry(); + TarArchiveEntry entry = in.getNextEntry(); while (entry != null) { if (!entry.isDirectory()) { entryNames.add(entry.getName().replaceFirst("^/workspace/", "")); } - entry = in.getNextTarEntry(); + entry = in.getNextEntry(); } } } @@ -101,7 +101,7 @@ public class ImageAssert extends AbstractAssert { this.actual.writeTo(out); try (TarArchiveInputStream in = new TarArchiveInputStream( new ByteArrayInputStream(out.toByteArray()))) { - TarArchiveEntry entry = in.getNextTarEntry(); + TarArchiveEntry entry = in.getNextEntry(); while (entry != null) { if (entry.getName().equals(name)) { ByteArrayOutputStream entryOut = new ByteArrayOutputStream(); @@ -109,7 +109,7 @@ public class ImageAssert extends AbstractAssert { assertConsumer.accept(new JsonContentAssert(LayerContentAssert.class, entryOut.toString())); return; } - entry = in.getNextTarEntry(); + entry = in.getNextEntry(); } } failWithMessage("Expected JSON entry '%s' in layer with digest '%s'", name, this.actual.getId());