|
@@ -98,7 +98,6 @@ public class GlobalBuildInfoPlugin implements Plugin<Project> {
|
|
|
|
|
|
@Override
|
|
|
public void apply(Project project) {
|
|
|
-
|
|
|
if (project != project.getRootProject()) {
|
|
|
throw new IllegalStateException(this.getClass().getName() + " can only be applied to the root project.");
|
|
|
}
|
|
@@ -350,10 +349,10 @@ public class GlobalBuildInfoPlugin implements Plugin<Project> {
|
|
|
}
|
|
|
|
|
|
private RuntimeJava runtimeJavaHome(Provider<File> fileProvider, boolean explicitlySet) {
|
|
|
- return runtimeJavaHome(fileProvider, explicitlySet, null);
|
|
|
+ return runtimeJavaHome(fileProvider, explicitlySet, null, null);
|
|
|
}
|
|
|
|
|
|
- private RuntimeJava runtimeJavaHome(Provider<File> fileProvider, boolean explicitlySet, String preReleasePostfix) {
|
|
|
+ private RuntimeJava runtimeJavaHome(Provider<File> fileProvider, boolean explicitlySet, String preReleasePostfix, Integer buildNumber) {
|
|
|
Provider<JavaVersion> javaVersion = fileProvider.map(
|
|
|
javaHome -> determineJavaVersion(
|
|
|
"runtime java.home",
|
|
@@ -367,19 +366,15 @@ public class GlobalBuildInfoPlugin implements Plugin<Project> {
|
|
|
Provider<String> vendorDetails = fileProvider.map(j -> metadataDetector.getMetadata(getJavaInstallation(j)))
|
|
|
.map(m -> formatJavaVendorDetails(m));
|
|
|
|
|
|
- return new RuntimeJava(fileProvider, javaVersion, vendorDetails, explicitlySet, preReleasePostfix);
|
|
|
+ return new RuntimeJava(fileProvider, javaVersion, vendorDetails, explicitlySet, preReleasePostfix, buildNumber);
|
|
|
}
|
|
|
|
|
|
private RuntimeJava resolvePreReleaseRuntimeJavaHome(String runtimeJavaProperty) {
|
|
|
var major = JavaLanguageVersion.of(Integer.parseInt(runtimeJavaProperty.substring(0, runtimeJavaProperty.length() - 4)));
|
|
|
Integer buildNumber = Integer.getInteger("runtime.java.build");
|
|
|
var jdkbuild = buildNumber == null ? findLatestPreReleaseBuild(major) : findPreReleaseBuild(major, buildNumber);
|
|
|
- String prVersionString = String.format("%d-%s+%d", major.asInt(), jdkbuild.type(), jdkbuild.buildNumber());
|
|
|
- return resolveJavaHomeFromJdkDownloadPlugin(jdkbuild.type(), major, prVersionString);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- private RuntimeJava resolveJavaHomeFromJdkDownloadPlugin(String preReleaseType, JavaLanguageVersion major, String prVersionString) {
|
|
|
+ String preReleaseType = jdkbuild.type();
|
|
|
+ String prVersionString = String.format("%d-%s+%d", major.asInt(), preReleaseType, jdkbuild.buildNumber());
|
|
|
NamedDomainObjectContainer<Jdk> container = (NamedDomainObjectContainer<Jdk>) project.getExtensions().getByName("jdks");
|
|
|
Jdk jdk = container.create(preReleaseType + "_" + major.asInt(), j -> {
|
|
|
j.setVersion(prVersionString);
|
|
@@ -391,7 +386,7 @@ public class GlobalBuildInfoPlugin implements Plugin<Project> {
|
|
|
// We on purpose resolve this here eagerly to ensure we resolve the jdk configuration in the context of the root project.
|
|
|
// If we keep this lazy we can not guarantee in which project context this is resolved which will fail the build.
|
|
|
File file = new File(jdk.getJavaHomePath().toString());
|
|
|
- return runtimeJavaHome(providers.provider(() -> file), true, preReleaseType);
|
|
|
+ return runtimeJavaHome(providers.provider(() -> file), true, preReleaseType, jdkbuild.buildNumber());
|
|
|
}
|
|
|
|
|
|
private Provider<File> resolveJavaHomeFromToolChainService(String version) {
|