mirror of
https://gitee.com/dcren/initializr.git
synced 2026-02-26 13:43:15 +08:00
Support of multiple Gradle generations
This commit improves `@ConditionalOnGradleVersion` to support more than one Gradle generation in case a bean should be declared for multiple Gradle generations. Closes gh-849
This commit is contained in:
@@ -36,6 +36,11 @@ import org.springframework.context.annotation.Conditional;
|
||||
@Conditional(OnGradleVersionCondition.class)
|
||||
public @interface ConditionalOnGradleVersion {
|
||||
|
||||
String value();
|
||||
/**
|
||||
* The Gradle generations that should be checked. The condition matches when at least
|
||||
* one gradle generation matches.
|
||||
* @return the gradle generation to check
|
||||
*/
|
||||
String[] value();
|
||||
|
||||
}
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package io.spring.initializr.generator.spring.build.gradle;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import io.spring.initializr.generator.condition.ProjectGenerationCondition;
|
||||
import io.spring.initializr.generator.project.ResolvedProjectDescription;
|
||||
import io.spring.initializr.generator.version.Version;
|
||||
@@ -43,15 +45,15 @@ public class OnGradleVersionCondition extends ProjectGenerationCondition {
|
||||
@Override
|
||||
protected boolean matches(ResolvedProjectDescription projectDescription,
|
||||
ConditionContext context, AnnotatedTypeMetadata metadata) {
|
||||
String gradleVersion = determineGradleGeneration(
|
||||
String gradleGeneration = determineGradleGeneration(
|
||||
projectDescription.getPlatformVersion());
|
||||
if (gradleVersion == null) {
|
||||
if (gradleGeneration == null) {
|
||||
return false;
|
||||
}
|
||||
String value = (String) metadata
|
||||
String[] values = (String[]) metadata
|
||||
.getAnnotationAttributes(ConditionalOnGradleVersion.class.getName())
|
||||
.get("value");
|
||||
return gradleVersion.equals(value);
|
||||
return Arrays.asList(values).contains(gradleGeneration);
|
||||
}
|
||||
|
||||
private String determineGradleGeneration(Version platformVersion) {
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package io.spring.initializr.generator.spring.build.gradle;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import io.spring.initializr.generator.project.ProjectDescription;
|
||||
import io.spring.initializr.generator.test.project.ProjectAssetTester;
|
||||
import io.spring.initializr.generator.version.Version;
|
||||
@@ -71,6 +73,24 @@ public class ConditionalOnGradleVersionTests {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void outcomeWithSpringBoot15AndMultipleGenerations() {
|
||||
ProjectDescription projectDescription = new ProjectDescription();
|
||||
projectDescription.setPlatformVersion(Version.parse("1.5.18.RELEASE"));
|
||||
Map<String, String> candidates = candidatesFor(projectDescription,
|
||||
Gradle3Or4TestConfiguration.class);
|
||||
assertThat(candidates).containsOnlyKeys("gradle3", "gradle3AndLater");
|
||||
}
|
||||
|
||||
@Test
|
||||
void outcomeWithSpringBoot2AndMultipleGenerations() {
|
||||
ProjectDescription projectDescription = new ProjectDescription();
|
||||
projectDescription.setPlatformVersion(Version.parse("2.0.9.RELEASE"));
|
||||
Map<String, String> candidates = candidatesFor(projectDescription,
|
||||
Gradle3Or4TestConfiguration.class);
|
||||
assertThat(candidates).containsOnlyKeys("gradle4", "gradle3AndLater");
|
||||
}
|
||||
|
||||
private String outcomeFor(ProjectDescription projectDescription) {
|
||||
return this.projectTester.generate(projectDescription,
|
||||
(projectGenerationContext) -> {
|
||||
@@ -80,6 +100,12 @@ public class ConditionalOnGradleVersionTests {
|
||||
});
|
||||
}
|
||||
|
||||
private Map<String, String> candidatesFor(ProjectDescription projectDescription,
|
||||
Class<?>... extraConfigurations) {
|
||||
return this.projectTester.withConfiguration(extraConfigurations).generate(
|
||||
projectDescription, (context) -> context.getBeansOfType(String.class));
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class GradleVersionTestConfiguration {
|
||||
|
||||
@@ -97,4 +123,15 @@ public class ConditionalOnGradleVersionTests {
|
||||
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class Gradle3Or4TestConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnGradleVersion({ "3", "4" })
|
||||
public String gradle3AndLater() {
|
||||
return "testGradle3AndLater";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user