mirror of
https://gitee.com/dcren/initializr.git
synced 2026-02-25 21:22:58 +08:00
Fix JavaVersion constant writer to handle recent Java versions
Closes gh-1160
This commit is contained in:
@@ -17,7 +17,6 @@
|
||||
package io.spring.initializr.generator.buildsystem.gradle;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -38,21 +37,7 @@ import io.spring.initializr.generator.version.VersionReference;
|
||||
*/
|
||||
public class KotlinDslGradleBuildWriter extends GradleBuildWriter {
|
||||
|
||||
private static final Map<String, String> sourceCompatibilitiesToJavaVersion = createSourceCompatibilitiesToJavaVersion();
|
||||
|
||||
private static Map<String, String> createSourceCompatibilitiesToJavaVersion() {
|
||||
Map<String, String> result = new HashMap<>();
|
||||
for (int version = 6; version <= 10; version++) {
|
||||
result.put(Integer.toString(version), "VERSION_1_" + version);
|
||||
result.put("1." + version, "VERSION_1_" + version);
|
||||
}
|
||||
for (int version = 11; version <= 12; version++) {
|
||||
result.put(Integer.toString(version), "VERSION_" + version);
|
||||
result.put("1." + version, "VERSION_" + version);
|
||||
}
|
||||
|
||||
return Collections.unmodifiableMap(result);
|
||||
}
|
||||
private final Map<String, String> sourceCompatibilitiesToJavaVersion = new HashMap<>();
|
||||
|
||||
@Override
|
||||
protected void writeBuildscript(IndentingWriter writer, GradleBuild build) {
|
||||
@@ -97,8 +82,28 @@ public class KotlinDslGradleBuildWriter extends GradleBuildWriter {
|
||||
|
||||
@Override
|
||||
protected void writeJavaSourceCompatibility(IndentingWriter writer, GradleBuildSettings settings) {
|
||||
writer.println("java.sourceCompatibility = JavaVersion."
|
||||
+ sourceCompatibilitiesToJavaVersion.get(settings.getSourceCompatibility()));
|
||||
writer.println("java.sourceCompatibility = " + getJavaVersionConstant(settings.getSourceCompatibility()));
|
||||
}
|
||||
|
||||
private String getJavaVersionConstant(String jvmVersion) {
|
||||
return this.sourceCompatibilitiesToJavaVersion.computeIfAbsent(jvmVersion, (key) -> {
|
||||
StringBuilder sb = new StringBuilder("JavaVersion.");
|
||||
if (jvmVersion == null) {
|
||||
return sb.append("VERSION_11").toString();
|
||||
}
|
||||
int generation = (jvmVersion.startsWith("1.") ? Integer.parseInt(jvmVersion.substring(2))
|
||||
: Integer.parseInt(jvmVersion));
|
||||
if (generation >= 1 && generation <= 10) {
|
||||
sb.append("VERSION_1_").append(generation);
|
||||
}
|
||||
else if (generation <= 17) {
|
||||
sb.append("VERSION_").append(generation);
|
||||
}
|
||||
else {
|
||||
sb.append("VERSION_HIGHER");
|
||||
}
|
||||
return sb.toString();
|
||||
});
|
||||
}
|
||||
|
||||
private String configurationReference(String configurationName, Collection<String> customConfigurations) {
|
||||
|
||||
@@ -20,6 +20,7 @@ import java.io.StringWriter;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.BillOfMaterials;
|
||||
import io.spring.initializr.generator.buildsystem.Dependency;
|
||||
@@ -30,6 +31,9 @@ import io.spring.initializr.generator.io.IndentingWriter;
|
||||
import io.spring.initializr.generator.version.VersionProperty;
|
||||
import io.spring.initializr.generator.version.VersionReference;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
|
||||
@@ -49,20 +53,31 @@ class KotlinDslGradleBuildWriterTests {
|
||||
assertThat(lines).contains("group = \"com.example\"", "version = \"1.0.1-SNAPSHOT\"");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithSourceCompatibility11() {
|
||||
@ParameterizedTest
|
||||
@MethodSource("sourceCompatibilityParameters")
|
||||
void gradleBuildWithSourceCompatibility15(String sourceCompatibility, String javaVersionConstant) {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.settings().sourceCompatibility("11");
|
||||
build.settings().sourceCompatibility(sourceCompatibility);
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).contains("java.sourceCompatibility = JavaVersion.VERSION_11");
|
||||
assertThat(lines).contains("java.sourceCompatibility = " + javaVersionConstant);
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithSourceCompatibility1Dot8() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.settings().sourceCompatibility("1.8");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).contains("java.sourceCompatibility = JavaVersion.VERSION_1_8");
|
||||
static Stream<Arguments> sourceCompatibilityParameters() {
|
||||
return Stream.of(Arguments.arguments("1.8", "JavaVersion.VERSION_1_8"),
|
||||
Arguments.arguments("8", "JavaVersion.VERSION_1_8"),
|
||||
Arguments.arguments("1.9", "JavaVersion.VERSION_1_9"),
|
||||
Arguments.arguments("9", "JavaVersion.VERSION_1_9"),
|
||||
Arguments.arguments("1.10", "JavaVersion.VERSION_1_10"),
|
||||
Arguments.arguments("10", "JavaVersion.VERSION_1_10"),
|
||||
Arguments.arguments(null, "JavaVersion.VERSION_11"),
|
||||
Arguments.arguments("11", "JavaVersion.VERSION_11"),
|
||||
Arguments.arguments("12", "JavaVersion.VERSION_12"),
|
||||
Arguments.arguments("13", "JavaVersion.VERSION_13"),
|
||||
Arguments.arguments("14", "JavaVersion.VERSION_14"),
|
||||
Arguments.arguments("15", "JavaVersion.VERSION_15"),
|
||||
Arguments.arguments("16", "JavaVersion.VERSION_16"),
|
||||
Arguments.arguments("17", "JavaVersion.VERSION_17"),
|
||||
Arguments.arguments("18", "JavaVersion.VERSION_HIGHER"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user