Pin Java version to 1.8.0_312 for Spring Data 2.x.

Closes #200
This commit is contained in:
Mark Paluch
2022-01-18 08:56:10 +01:00
parent 2f28d04eb1
commit 0df875c11b
3 changed files with 37 additions and 6 deletions

View File

@@ -52,7 +52,8 @@ import com.dd.plist.XMLPropertyListParser;
*/
public class JavaRuntimes {
private static final List<JdkDetector> DETECTORS = Arrays.asList(new SDKmanJdkDetector(), new MacNativeJdkDetector());
private static final List<JdkDetector> DETECTORS = Arrays.asList(new SDKmanJdkDetector(), new MacNativeJdkDetector(),
new JavaHomeJdkDetector());
private static final Lazy<List<JdkInstallation>> JDKS = Lazy.of(() -> {
List<JdkInstallation> jdks = DETECTORS.stream().flatMap(it -> it.detect().stream()).sorted()
@@ -179,6 +180,28 @@ public class JavaRuntimes {
}
}
/**
* Detector using the {@code java.home} system property.
*/
static class JavaHomeJdkDetector implements JdkDetector {
private static final File javaHome = new File(System.getProperty("java.home"));
private static final String javaVersion = System.getProperty("java.version");
private static final String javaVendor = System.getProperty("java.vendor");
@Override
public boolean isAvailable() {
return javaHome.exists() && javaHome.isDirectory();
}
@Override
public List<JdkInstallation> detect() {
return Collections
.singletonList(new JdkInstallation(JavaVersion.parse(javaVersion), javaVendor + " " + javaVersion, javaHome));
}
}
/**
* Detector using the {@code /usr/libexec/java_home} utility storing Java installations in {@code /Libraries/Java} on
* the Mac.
@@ -218,12 +241,12 @@ public class JavaRuntimes {
String jvmHomePath = dict.get("JVMHomePath").toJavaObject(String.class);
String name = dict.get("JVMName").toJavaObject(String.class);
String version = dict.get("JVMVersion").toJavaObject(String.class).replace('_', '.');
String version = dict.get("JVMVersion").toJavaObject(String.class);
Matcher matcher = VERSION.matcher(version);
matcher.find();
return new JdkInstallation(Version.parse(matcher.group(1)), name, new File(jvmHomePath));
return new JdkInstallation(JavaVersion.parse(matcher.group(1)), name, new File(jvmHomePath));
}).collect(Collectors.toList());
}

View File

@@ -27,12 +27,20 @@ import java.util.function.Predicate;
@Value(staticConstructor = "of")
public class JavaVersion {
public static final JavaVersion JAVA_8 = of("Java 1.8",
version -> version.getMajor() == 1 && version.getMinor() == 8);
public static final JavaVersion JAVA_8 = of("1.8.0_312");
public static final JavaVersion JAVA_17 = of("Java 17", version -> version.getMajor() == 17);
String name;
Predicate<Version> versionDetector;
public static JavaVersion of(String version) {
Version expectedVersion = parse(version);
return of("Java " + version, candidate -> candidate.is(expectedVersion));
}
public static Version parse(String version) {
return Version.parse(version.replace('_', '.'));
}
}

View File

@@ -26,7 +26,7 @@ import org.springframework.data.release.model.Version;
*
* @author Mark Paluch
*/
class JdkUtilityTests {
class JavaRuntimesUnitTests {
@Test
void shouldDiscoverCurrentJavaVersion() {