Browse Source

Merge branch '3.0.x'

Closes gh-35036
pull/34508/head
Andy Wilkinson 3 years ago
parent
commit
d6bbbb8bac
  1. 3
      spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/gradle/packaging/boot-jar-layered-custom.gradle.kts
  2. 21
      spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/LayeredSpec.java

3
spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/gradle/packaging/boot-jar-layered-custom.gradle.kts

@ -19,6 +19,9 @@ tasks.named<BootJar>("bootJar") { @@ -19,6 +19,9 @@ tasks.named<BootJar>("bootJar") {
intoLayer("application")
}
dependencies {
intoLayer("application") {
includeProjectDependencies()
}
intoLayer("snapshot-dependencies") {
include("*:*:*SNAPSHOT")
}

21
spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/tasks/bundling/LayeredSpec.java

@ -175,18 +175,20 @@ public abstract class LayeredSpec { @@ -175,18 +175,20 @@ public abstract class LayeredSpec {
/**
* Base class for specs that control the layers to which a category of content should
* belong.
*
* @param <S> the type of {@link IntoLayerSpec} used by this spec
*/
public abstract static class IntoLayersSpec implements Serializable {
public abstract static class IntoLayersSpec<S extends IntoLayerSpec> implements Serializable {
private final List<IntoLayerSpec> intoLayers;
private final Function<String, IntoLayerSpec> specFactory;
private final Function<String, S> specFactory;
boolean isEmpty() {
return this.intoLayers.isEmpty();
}
IntoLayersSpec(Function<String, IntoLayerSpec> specFactory, IntoLayerSpec... spec) {
IntoLayersSpec(Function<String, S> specFactory, IntoLayerSpec... spec) {
this.intoLayers = new ArrayList<>(Arrays.asList(spec));
this.specFactory = specFactory;
}
@ -195,8 +197,8 @@ public abstract class LayeredSpec { @@ -195,8 +197,8 @@ public abstract class LayeredSpec {
this.intoLayers.add(this.specFactory.apply(layer));
}
public void intoLayer(String layer, Action<IntoLayerSpec> action) {
IntoLayerSpec spec = this.specFactory.apply(layer);
public void intoLayer(String layer, Action<S> action) {
S spec = this.specFactory.apply(layer);
action.execute(spec);
this.intoLayers.add(spec);
}
@ -330,7 +332,7 @@ public abstract class LayeredSpec { @@ -330,7 +332,7 @@ public abstract class LayeredSpec {
* An {@link IntoLayersSpec} that controls the layers to which application classes and
* resources belong.
*/
public static class ApplicationSpec extends IntoLayersSpec {
public static class ApplicationSpec extends IntoLayersSpec<IntoLayerSpec> {
@Inject
public ApplicationSpec() {
@ -364,7 +366,7 @@ public abstract class LayeredSpec { @@ -364,7 +366,7 @@ public abstract class LayeredSpec {
/**
* An {@link IntoLayersSpec} that controls the layers to which dependencies belong.
*/
public static class DependenciesSpec extends IntoLayersSpec implements Serializable {
public static class DependenciesSpec extends IntoLayersSpec<DependenciesIntoLayerSpec> implements Serializable {
@Inject
public DependenciesSpec() {
@ -384,10 +386,11 @@ public abstract class LayeredSpec { @@ -384,10 +386,11 @@ public abstract class LayeredSpec {
(spec) -> ((DependenciesIntoLayerSpec) spec).asLibrarySelector(LibraryContentFilter::new));
}
private static final class IntoLayerSpecFactory implements Function<String, IntoLayerSpec>, Serializable {
private static final class IntoLayerSpecFactory
implements Function<String, DependenciesIntoLayerSpec>, Serializable {
@Override
public IntoLayerSpec apply(String layer) {
public DependenciesIntoLayerSpec apply(String layer) {
return new DependenciesIntoLayerSpec(layer);
}

Loading…
Cancel
Save