@@ -98,7 +98,6 @@ public GlobalBuildInfoPlugin(
9898
9999 @ Override
100100 public void apply (Project project ) {
101-
102101 if (project != project .getRootProject ()) {
103102 throw new IllegalStateException (this .getClass ().getName () + " can only be applied to the root project." );
104103 }
@@ -350,10 +349,10 @@ private RuntimeJava findRuntimeJavaHome() {
350349 }
351350
352351 private RuntimeJava runtimeJavaHome (Provider <File > fileProvider , boolean explicitlySet ) {
353- return runtimeJavaHome (fileProvider , explicitlySet , null );
352+ return runtimeJavaHome (fileProvider , explicitlySet , null , null );
354353 }
355354
356- private RuntimeJava runtimeJavaHome (Provider <File > fileProvider , boolean explicitlySet , String preReleasePostfix ) {
355+ private RuntimeJava runtimeJavaHome (Provider <File > fileProvider , boolean explicitlySet , String preReleasePostfix , Integer buildNumber ) {
357356 Provider <JavaVersion > javaVersion = fileProvider .map (
358357 javaHome -> determineJavaVersion (
359358 "runtime java.home" ,
@@ -367,19 +366,15 @@ private RuntimeJava runtimeJavaHome(Provider<File> fileProvider, boolean explici
367366 Provider <String > vendorDetails = fileProvider .map (j -> metadataDetector .getMetadata (getJavaInstallation (j )))
368367 .map (m -> formatJavaVendorDetails (m ));
369368
370- return new RuntimeJava (fileProvider , javaVersion , vendorDetails , explicitlySet , preReleasePostfix );
369+ return new RuntimeJava (fileProvider , javaVersion , vendorDetails , explicitlySet , preReleasePostfix , buildNumber );
371370 }
372371
373372 private RuntimeJava resolvePreReleaseRuntimeJavaHome (String runtimeJavaProperty ) {
374373 var major = JavaLanguageVersion .of (Integer .parseInt (runtimeJavaProperty .substring (0 , runtimeJavaProperty .length () - 4 )));
375374 Integer buildNumber = Integer .getInteger ("runtime.java.build" );
376375 var jdkbuild = buildNumber == null ? findLatestPreReleaseBuild (major ) : findPreReleaseBuild (major , buildNumber );
377- String prVersionString = String .format ("%d-%s+%d" , major .asInt (), jdkbuild .type (), jdkbuild .buildNumber ());
378- return resolveJavaHomeFromJdkDownloadPlugin (jdkbuild .type (), major , prVersionString );
379-
380- }
381-
382- private RuntimeJava resolveJavaHomeFromJdkDownloadPlugin (String preReleaseType , JavaLanguageVersion major , String prVersionString ) {
376+ String preReleaseType = jdkbuild .type ();
377+ String prVersionString = String .format ("%d-%s+%d" , major .asInt (), preReleaseType , jdkbuild .buildNumber ());
383378 NamedDomainObjectContainer <Jdk > container = (NamedDomainObjectContainer <Jdk >) project .getExtensions ().getByName ("jdks" );
384379 Jdk jdk = container .create (preReleaseType + "_" + major .asInt (), j -> {
385380 j .setVersion (prVersionString );
@@ -391,7 +386,7 @@ private RuntimeJava resolveJavaHomeFromJdkDownloadPlugin(String preReleaseType,
391386 // We on purpose resolve this here eagerly to ensure we resolve the jdk configuration in the context of the root project.
392387 // If we keep this lazy we can not guarantee in which project context this is resolved which will fail the build.
393388 File file = new File (jdk .getJavaHomePath ().toString ());
394- return runtimeJavaHome (providers .provider (() -> file ), true , preReleaseType );
389+ return runtimeJavaHome (providers .provider (() -> file ), true , preReleaseType , jdkbuild . buildNumber () );
395390 }
396391
397392 private Provider <File > resolveJavaHomeFromToolChainService (String version ) {
0 commit comments