Skip to content

Commit bc46bb2

Browse files
committed
Drop spring-boot-loader-classic support
Closes gh-45714
1 parent 3b2c8ab commit bc46bb2

File tree

121 files changed

+15
-12168
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

121 files changed

+15
-12168
lines changed

build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/BootArchive.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@
3434
import org.gradle.api.tasks.Optional;
3535
import org.jspecify.annotations.Nullable;
3636

37-
import org.springframework.boot.loader.tools.LoaderImplementation;
38-
3937
/**
4038
* A Spring Boot "fat" archive task.
4139
*
@@ -137,15 +135,6 @@ public interface BootArchive extends Task {
137135
*/
138136
void resolvedArtifacts(Provider<Set<ResolvedArtifactResult>> resolvedArtifacts);
139137

140-
/**
141-
* The loader implementation that should be used with the archive.
142-
* @return the loader implementation
143-
* @since 3.2.0
144-
*/
145-
@Input
146-
@Optional
147-
Property<LoaderImplementation> getLoaderImplementation();
148-
149138
/**
150139
* Returns whether the JAR tools should be included as a dependency in the layered
151140
* archive.

build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/BootArchiveSupport.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@
4646
import org.gradle.util.GradleVersion;
4747
import org.jspecify.annotations.Nullable;
4848

49-
import org.springframework.boot.loader.tools.LoaderImplementation;
50-
5149
/**
5250
* Support class for implementations of {@link BootArchive}.
5351
*
@@ -123,13 +121,11 @@ private String determineSpringBootVersion() {
123121
return (version != null) ? version : "unknown";
124122
}
125123

126-
CopyAction createCopyAction(Jar jar, ResolvedDependencies resolvedDependencies,
127-
LoaderImplementation loaderImplementation, boolean supportsSignatureFile) {
128-
return createCopyAction(jar, resolvedDependencies, loaderImplementation, supportsSignatureFile, null, null);
124+
CopyAction createCopyAction(Jar jar, ResolvedDependencies resolvedDependencies, boolean supportsSignatureFile) {
125+
return createCopyAction(jar, resolvedDependencies, supportsSignatureFile, null, null);
129126
}
130127

131-
CopyAction createCopyAction(Jar jar, ResolvedDependencies resolvedDependencies,
132-
LoaderImplementation loaderImplementation, boolean supportsSignatureFile,
128+
CopyAction createCopyAction(Jar jar, ResolvedDependencies resolvedDependencies, boolean supportsSignatureFile,
133129
@Nullable LayerResolver layerResolver, @Nullable String jarmodeToolsLocation) {
134130
File output = jar.getArchiveFile().get().getAsFile();
135131
Manifest manifest = jar.getManifest();
@@ -145,8 +141,7 @@ CopyAction createCopyAction(Jar jar, ResolvedDependencies resolvedDependencies,
145141
String encoding = jar.getMetadataCharset();
146142
CopyAction action = new BootZipCopyAction(output, manifest, preserveFileTimestamps, dirPermissions,
147143
filePermissions, includeDefaultLoader, jarmodeToolsLocation, requiresUnpack, exclusions, launchScript,
148-
librarySpec, compressionResolver, encoding, resolvedDependencies, supportsSignatureFile, layerResolver,
149-
loaderImplementation);
144+
librarySpec, compressionResolver, encoding, resolvedDependencies, supportsSignatureFile, layerResolver);
150145
return jar.isReproducibleFileOrder() ? new ReproducibleOrderingCopyAction(action) : action;
151146
}
152147

build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/BootJar.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@
3838
import org.gradle.work.DisableCachingByDefault;
3939
import org.jspecify.annotations.Nullable;
4040

41-
import org.springframework.boot.loader.tools.LoaderImplementation;
42-
4341
/**
4442
* A custom {@link Jar} task that produces a Spring Boot executable jar.
4543
*
@@ -145,13 +143,12 @@ private boolean isLayeredDisabled() {
145143

146144
@Override
147145
protected CopyAction createCopyAction() {
148-
LoaderImplementation loaderImplementation = getLoaderImplementation().getOrElse(LoaderImplementation.DEFAULT);
149146
LayerResolver layerResolver = null;
150147
if (!isLayeredDisabled()) {
151148
layerResolver = new LayerResolver(this.resolvedDependencies, this.layered, this::isLibrary);
152149
}
153150
String jarmodeToolsLocation = isIncludeJarmodeTools() ? LIB_DIRECTORY : null;
154-
return this.support.createCopyAction(this, this.resolvedDependencies, loaderImplementation, true, layerResolver,
151+
return this.support.createCopyAction(this, this.resolvedDependencies, true, layerResolver,
155152
jarmodeToolsLocation);
156153
}
157154

build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/BootWar.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@
3838
import org.gradle.work.DisableCachingByDefault;
3939
import org.jspecify.annotations.Nullable;
4040

41-
import org.springframework.boot.loader.tools.LoaderImplementation;
42-
4341
/**
4442
* A custom {@link War} task that produces a Spring Boot executable war.
4543
*
@@ -119,14 +117,13 @@ private boolean isLayeredDisabled() {
119117

120118
@Override
121119
protected CopyAction createCopyAction() {
122-
LoaderImplementation loaderImplementation = getLoaderImplementation().getOrElse(LoaderImplementation.DEFAULT);
123120
LayerResolver layerResolver = null;
124121
if (!isLayeredDisabled()) {
125122
layerResolver = new LayerResolver(this.resolvedDependencies, this.layered, this::isLibrary);
126123
}
127124
String jarmodeToolsLocation = isIncludeJarmodeTools() ? LIB_DIRECTORY : null;
128-
return this.support.createCopyAction(this, this.resolvedDependencies, loaderImplementation, false,
129-
layerResolver, jarmodeToolsLocation);
125+
return this.support.createCopyAction(this, this.resolvedDependencies, false, layerResolver,
126+
jarmodeToolsLocation);
130127
}
131128

132129
private boolean isIncludeJarmodeTools() {

build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/BootZipCopyAction.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@
6363
import org.springframework.boot.loader.tools.Layer;
6464
import org.springframework.boot.loader.tools.LayersIndex;
6565
import org.springframework.boot.loader.tools.LibraryCoordinates;
66-
import org.springframework.boot.loader.tools.LoaderImplementation;
6766
import org.springframework.boot.loader.tools.NativeImageArgFile;
6867
import org.springframework.boot.loader.tools.ReachabilityMetadataProperties;
6968
import org.springframework.util.Assert;
@@ -120,15 +119,13 @@ class BootZipCopyAction implements CopyAction {
120119

121120
private final @Nullable LayerResolver layerResolver;
122121

123-
private final LoaderImplementation loaderImplementation;
124-
125122
BootZipCopyAction(File output, Manifest manifest, boolean preserveFileTimestamps, @Nullable Integer dirMode,
126123
@Nullable Integer fileMode, boolean includeDefaultLoader, @Nullable String jarmodeToolsLocation,
127124
Spec<FileTreeElement> requiresUnpack, Spec<FileTreeElement> exclusions,
128125
@Nullable LaunchScriptConfiguration launchScript, Spec<FileCopyDetails> librarySpec,
129126
Function<FileCopyDetails, ZipCompression> compressionResolver, @Nullable String encoding,
130127
ResolvedDependencies resolvedDependencies, boolean supportsSignatureFile,
131-
@Nullable LayerResolver layerResolver, LoaderImplementation loaderImplementation) {
128+
@Nullable LayerResolver layerResolver) {
132129
this.output = output;
133130
this.manifest = manifest;
134131
this.preserveFileTimestamps = preserveFileTimestamps;
@@ -145,7 +142,6 @@ class BootZipCopyAction implements CopyAction {
145142
this.resolvedDependencies = resolvedDependencies;
146143
this.supportsSignatureFile = supportsSignatureFile;
147144
this.layerResolver = layerResolver;
148-
this.loaderImplementation = loaderImplementation;
149145
}
150146

151147
@Override
@@ -329,8 +325,7 @@ private void writeLoaderEntriesIfNecessary(@Nullable FileCopyDetails details) th
329325
// Always write loader entries after META-INF directory (see gh-16698)
330326
return;
331327
}
332-
LoaderZipEntries loaderEntries = new LoaderZipEntries(getTime(), getDirMode(), getFileMode(),
333-
BootZipCopyAction.this.loaderImplementation);
328+
LoaderZipEntries loaderEntries = new LoaderZipEntries(getTime(), getDirMode(), getFileMode());
334329
this.writtenLoaderEntries = loaderEntries.writeTo(this.out);
335330
if (BootZipCopyAction.this.layerResolver != null) {
336331
for (String name : this.writtenLoaderEntries.getFiles()) {

build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/LoaderZipEntries.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import org.gradle.api.file.FileTreeElement;
3030
import org.jspecify.annotations.Nullable;
3131

32-
import org.springframework.boot.loader.tools.LoaderImplementation;
3332
import org.springframework.util.Assert;
3433
import org.springframework.util.StreamUtils;
3534

@@ -42,27 +41,22 @@
4241
*/
4342
class LoaderZipEntries {
4443

45-
private final LoaderImplementation loaderImplementation;
46-
4744
private final @Nullable Long entryTime;
4845

4946
private final int dirMode;
5047

5148
private final int fileMode;
5249

53-
LoaderZipEntries(@Nullable Long entryTime, int dirMode, int fileMode,
54-
@Nullable LoaderImplementation loaderImplementation) {
50+
LoaderZipEntries(@Nullable Long entryTime, int dirMode, int fileMode) {
5551
this.entryTime = entryTime;
5652
this.dirMode = dirMode;
5753
this.fileMode = fileMode;
58-
this.loaderImplementation = (loaderImplementation != null) ? loaderImplementation
59-
: LoaderImplementation.DEFAULT;
6054
}
6155

6256
WrittenEntries writeTo(ZipArchiveOutputStream out) throws IOException {
6357
WrittenEntries written = new WrittenEntries();
6458
try (ZipInputStream loaderJar = new ZipInputStream(
65-
getResourceAsStream("/" + this.loaderImplementation.getJarResourceName()))) {
59+
getResourceAsStream("/META-INF/loader/spring-boot-loader.jar"))) {
6660
java.util.zip.ZipEntry entry = loaderJar.getNextEntry();
6761
while (entry != null) {
6862
if (entry.isDirectory() && !entry.getName().equals("META-INF/")) {

build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveIntegrationTests.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -108,16 +108,6 @@ void reproducibleArchive() throws IOException, InterruptedException {
108108
assertThat(firstHash).isEqualTo(secondHash);
109109
}
110110

111-
@TestTemplate
112-
void classicLoader() throws IOException {
113-
assertThat(this.gradleBuild.build(this.taskName).task(":" + this.taskName).getOutcome())
114-
.isEqualTo(TaskOutcome.SUCCESS);
115-
File jar = new File(this.gradleBuild.getProjectDir(), "build/libs").listFiles()[0];
116-
try (JarFile jarFile = new JarFile(jar)) {
117-
assertThat(jarFile.getEntry("org/springframework/boot/loader/LaunchedURLClassLoader.class")).isNotNull();
118-
}
119-
}
120-
121111
@TestTemplate
122112
void upToDateWhenBuiltTwice() {
123113
assertThat(this.gradleBuild.build(this.taskName).task(":" + this.taskName).getOutcome())

build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveTests.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@
6565
import org.springframework.boot.gradle.junit.GradleProjectBuilder;
6666
import org.springframework.boot.loader.tools.DefaultLaunchScript;
6767
import org.springframework.boot.loader.tools.JarModeLibrary;
68-
import org.springframework.boot.loader.tools.LoaderImplementation;
6968
import org.springframework.util.FileCopyUtils;
7069

7170
import static org.assertj.core.api.Assertions.assertThat;
@@ -283,17 +282,6 @@ void loaderIsWrittenToTheRootOfTheJarWhenUsingThePropertiesLauncher() throws IOE
283282
}
284283
}
285284

286-
@Test
287-
void loaderIsWrittenToTheRootOfTheJarWhenUsingClassicLoader() throws IOException {
288-
this.task.getMainClass().set("com.example.Main");
289-
this.task.getLoaderImplementation().set(LoaderImplementation.CLASSIC);
290-
executeTask();
291-
try (JarFile jarFile = new JarFile(this.task.getArchiveFile().get().getAsFile())) {
292-
assertThat(jarFile.getEntry("org/springframework/boot/loader/LaunchedURLClassLoader.class")).isNotNull();
293-
assertThat(jarFile.getEntry("org/springframework/boot/loader/")).isNotNull();
294-
}
295-
}
296-
297285
@Test
298286
void unpackCommentIsAddedToEntryIdentifiedByAPattern() throws IOException {
299287
this.task.getMainClass().set("com.example.Main");

build-plugin/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootJarIntegrationTests-classicLoader.gradle

Lines changed: 0 additions & 25 deletions
This file was deleted.

build-plugin/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootWarIntegrationTests-classicLoader.gradle

Lines changed: 0 additions & 25 deletions
This file was deleted.

0 commit comments

Comments
 (0)