From 3479653ca18fd64efabad0294f57fc5015ecf51d Mon Sep 17 00:00:00 2001 From: Martin Chalupa Date: Thu, 13 Aug 2020 11:46:06 -0700 Subject: [PATCH] bootArchives configuration should be marked as non resolvable configuration to better convey its purpose and ensure better interaction with other gradle plugins --- .../boot/gradle/plugin/SpringBootPlugin.java | 1 + ...ootArchivesConfigurationContractTests.java | 57 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/BootArchivesConfigurationContractTests.java diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootPlugin.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootPlugin.java index 0de213cc66bc..a41b6de687ce 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootPlugin.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootPlugin.java @@ -111,6 +111,7 @@ private void createExtension(Project project) { private Configuration createBootArchivesConfiguration(Project project) { Configuration bootArchives = project.getConfigurations().create(BOOT_ARCHIVES_CONFIGURATION_NAME); bootArchives.setDescription("Configuration for Spring Boot archive artifacts."); + bootArchives.setCanBeResolved(false); return bootArchives; } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/BootArchivesConfigurationContractTests.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/BootArchivesConfigurationContractTests.java new file mode 100644 index 000000000000..74376aa368e9 --- /dev/null +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/BootArchivesConfigurationContractTests.java @@ -0,0 +1,57 @@ +/* + * Copyright 2012-2020 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. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.gradle.plugin; + +import java.io.File; +import java.io.IOException; + +import org.gradle.api.Project; +import org.gradle.api.artifacts.Configuration; +import org.gradle.testfixtures.ProjectBuilder; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Tests for expectations about {code bootArchives} Gradle configuration about its + * purpose. + * + * @author Martin Chalupa + */ +public class BootArchivesConfigurationContractTests { + + @TempDir + File temp; + + private Project project; + + @BeforeEach + void createConvention() throws IOException { + this.project = ProjectBuilder.builder().withProjectDir(this.temp).build(); + } + + @Test + void bootArchivesConfigurationsCannotBeResolved() { + this.project.getPlugins().apply(SpringBootPlugin.class); + Configuration bootArchives = this.project.getConfigurations() + .getByName(SpringBootPlugin.BOOT_ARCHIVES_CONFIGURATION_NAME); + assertThat(bootArchives.isCanBeResolved()).isFalse(); + } + +}