Skip to content

Commit 38b5924

Browse files
committed
Store resolved toolchain info as custom values in build scan
Prior to this commit, we registered custom values in the build scan for the main and test toolchains based on input values provided via the mainToolchain and testToolchain project properties. Beginning with this commit, the custom values we register are based on the available metadata for the resolved JDK/JVM for each toolchain. For example, instead of registering the following custom value... Test toolchain : JDK11 ... we now register the following which includes the vendor, version, and installation path of the JDK/JVM. Test toolchain : AdoptOpenJDK 11 (/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home) Once Gradle's JavaInstallationMetadata includes the exact version, we will likely use that instead of the installation path. See gh-25787
1 parent 2c2464b commit 38b5924

File tree

2 files changed

+21
-8
lines changed

2 files changed

+21
-8
lines changed

gradle/toolchains.gradle

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
* }
3030
*
3131
* @author Brian Clozel
32+
* @author Sam Brannen
3233
*/
3334

3435
def mainToolchainConfigured() {
@@ -129,7 +130,7 @@ pluginManager.withPlugin("kotlin") {
129130
}
130131
}
131132
}
132-
133+
133134
if (testToolchainConfigured()) {
134135
def testLanguageVersion = testToolchainLanguageVersion()
135136
def compiler = javaToolchains.compilerFor {
@@ -160,4 +161,22 @@ pluginManager.withPlugin("me.champeau.jmh") {
160161
}
161162
}
162163
}
163-
}
164+
}
165+
166+
// Store resolved Toolchain JVM information as custom values in the build scan.
167+
rootProject.ext {
168+
resolvedMainToolchain = false
169+
resolvedTestToolchain = false
170+
}
171+
gradle.taskGraph.afterTask { Task task, TaskState state ->
172+
if (mainToolchainConfigured() && !resolvedMainToolchain && task instanceof JavaCompile && task.javaCompiler.isPresent()) {
173+
def metadata = task.javaCompiler.get().metadata
174+
task.project.buildScan.value('Main toolchain', "$metadata.vendor $metadata.languageVersion ($metadata.installationPath)")
175+
resolvedMainToolchain = true
176+
}
177+
if (testToolchainConfigured() && !resolvedTestToolchain && task instanceof Test && task.javaLauncher.isPresent()) {
178+
def metadata = task.javaLauncher.get().metadata
179+
task.project.buildScan.value('Test toolchain', "$metadata.vendor $metadata.languageVersion ($metadata.installationPath)")
180+
resolvedTestToolchain = true
181+
}
182+
}

settings.gradle

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,6 @@ rootProject.children.each {project ->
4545
settings.gradle.projectsLoaded {
4646
gradleEnterprise {
4747
buildScan {
48-
if (settings.gradle.rootProject.hasProperty('mainToolchain') && settings.gradle.rootProject.getProperty('mainToolchain')) {
49-
value("Main toolchain", 'JDK' + settings.gradle.rootProject.getProperty('mainToolchain'))
50-
}
51-
if (settings.gradle.rootProject.hasProperty('testToolchain') && settings.gradle.rootProject.getProperty('testToolchain')) {
52-
value("Test toolchain", 'JDK' + settings.gradle.rootProject.getProperty('testToolchain'))
53-
}
5448
File buildDir = settings.gradle.rootProject.getBuildDir()
5549
buildDir.mkdirs()
5650
new File(buildDir, "build-scan-uri.txt").text = "(build scan not generated)"

0 commit comments

Comments
 (0)