Create a new layer for loader classes
Create a dedicated layer that is used to hold the launcher support classes. The layer sits between `dependencies` and `snapshot-dependencies` so that the layer is sensible for both SNAPSHOT and RELEASE versions of Spring Boot Closes gh-20529
This commit is contained in:
parent
7bc7d86ad4
commit
3f806aa513
|
|
@ -100,7 +100,7 @@ class BootJarTests extends AbstractBootArchiveTests<TestBootJar> {
|
||||||
@Test
|
@Test
|
||||||
void whenJarIsLayeredThenLayersIndexIsPresentAndListsLayersInOrder() throws IOException {
|
void whenJarIsLayeredThenLayersIndexIsPresentAndListsLayersInOrder() throws IOException {
|
||||||
try (JarFile jarFile = new JarFile(createLayeredJar())) {
|
try (JarFile jarFile = new JarFile(createLayeredJar())) {
|
||||||
assertThat(entryLines(jarFile, "BOOT-INF/layers.idx")).containsExactly("dependencies",
|
assertThat(entryLines(jarFile, "BOOT-INF/layers.idx")).containsExactly("dependencies", "spring-boot-loader",
|
||||||
"snapshot-dependencies", "application");
|
"snapshot-dependencies", "application");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,13 @@ package org.springframework.boot.loader.tools;
|
||||||
*/
|
*/
|
||||||
class ImplicitLayerResolver extends StandardLayers {
|
class ImplicitLayerResolver extends StandardLayers {
|
||||||
|
|
||||||
|
private static final String SPRING_BOOT_LOADER_PREFIX = "org/springframework/boot/loader/";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Layer getLayer(String name) {
|
public Layer getLayer(String name) {
|
||||||
|
if (name.startsWith(SPRING_BOOT_LOADER_PREFIX)) {
|
||||||
|
return SPRING_BOOT_LOADER;
|
||||||
|
}
|
||||||
return APPLICATION;
|
return APPLICATION;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,11 @@ public abstract class StandardLayers implements Layers {
|
||||||
*/
|
*/
|
||||||
public static final Layer DEPENDENCIES = new Layer("dependencies");
|
public static final Layer DEPENDENCIES = new Layer("dependencies");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The spring boot loader layer.
|
||||||
|
*/
|
||||||
|
public static final Layer SPRING_BOOT_LOADER = new Layer("spring-boot-loader");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The snapshot dependencies layer.
|
* The snapshot dependencies layer.
|
||||||
*/
|
*/
|
||||||
|
|
@ -55,6 +60,7 @@ public abstract class StandardLayers implements Layers {
|
||||||
static {
|
static {
|
||||||
List<Layer> layers = new ArrayList<>();
|
List<Layer> layers = new ArrayList<>();
|
||||||
layers.add(DEPENDENCIES);
|
layers.add(DEPENDENCIES);
|
||||||
|
layers.add(SPRING_BOOT_LOADER);
|
||||||
layers.add(SNAPSHOT_DEPENDENCIES);
|
layers.add(SNAPSHOT_DEPENDENCIES);
|
||||||
layers.add(APPLICATION);
|
layers.add(APPLICATION);
|
||||||
LAYERS = Collections.unmodifiableList(layers);
|
LAYERS = Collections.unmodifiableList(layers);
|
||||||
|
|
|
||||||
|
|
@ -34,8 +34,8 @@ class ImplicitLayerResolverTests {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void iteratorReturnsLayers() {
|
void iteratorReturnsLayers() {
|
||||||
assertThat(this.layers).containsExactly(StandardLayers.DEPENDENCIES, StandardLayers.SNAPSHOT_DEPENDENCIES,
|
assertThat(this.layers).containsExactly(StandardLayers.DEPENDENCIES, StandardLayers.SPRING_BOOT_LOADER,
|
||||||
StandardLayers.APPLICATION);
|
StandardLayers.SNAPSHOT_DEPENDENCIES, StandardLayers.APPLICATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue