From b3275c5647d60bdbb7a1f1db702cf45ad15bf0bb Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 5 May 2021 08:27:35 +0100 Subject: [PATCH] Align productionRuntimeClasspath with runtimeClasspath Fixes gh-25798 --- .../boot/gradle/plugin/JavaPluginAction.java | 2 ++ .../plugin/JavaPluginActionIntegrationTests.java | 14 +++++++++++++- .../plugin/JavaPluginActionIntegrationTests.gradle | 8 ++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java index 4fcc571c3c0..70378e3ef1b 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/JavaPluginAction.java @@ -205,6 +205,8 @@ final class JavaPluginAction implements PluginApplicationAction { objectFactory.named(LibraryElements.class, LibraryElements.JAR)); productionRuntimeClasspath.setVisible(false); productionRuntimeClasspath.setExtendsFrom(runtimeClasspath.getExtendsFrom()); + productionRuntimeClasspath.setCanBeResolved(runtimeClasspath.isCanBeResolved()); + productionRuntimeClasspath.setCanBeConsumed(runtimeClasspath.isCanBeConsumed()); runtimeClasspath.extendsFrom(developmentOnly); } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.java index c2625ba5352..e50abe5abbf 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -155,6 +155,18 @@ class JavaPluginActionIntegrationTests { .contains("org.gradle.dependency.bundling: external"); } + @TestTemplate + void productionRuntimeClasspathIsConfiguredWithResolvabilityAndConsumabilityThatMatchesRuntimeClasspath() { + String productionRuntime = this.gradleBuild.build("configurationResolvabilityAndConsumability", + "-PconfigurationName=runtimeClasspath", "-PapplyJavaPlugin").getOutput(); + assertThat(productionRuntime).contains("canBeResolved: true"); + assertThat(productionRuntime).contains("canBeConsumed: false"); + String runtime = this.gradleBuild.build("configurationResolvabilityAndConsumability", + "-PconfigurationName=productionRuntimeClasspath", "-PapplyJavaPlugin").getOutput(); + assertThat(runtime).contains("canBeResolved: true"); + assertThat(runtime).contains("canBeConsumed: false"); + } + private void createMinimalMainSource() throws IOException { File examplePackage = new File(this.gradleBuild.getProjectDir(), "src/main/java/com/example"); examplePackage.mkdirs(); diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.gradle index 4446a07a064..7ffcce40abf 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.gradle @@ -34,4 +34,12 @@ task('configurationAttributes') { println " ${attribute}: ${attributes.getAttribute(attribute)}" } } +} + +task('configurationResolvabilityAndConsumability') { + doFirst { + def configuration = configurations.findByName(configurationName) + println "canBeResolved: ${configuration.canBeResolved}" + println "canBeConsumed: ${configuration.canBeConsumed}" + } } \ No newline at end of file