Allow additional build info properties to have provided values

Closes gh-37889
This commit is contained in:
Andy Wilkinson
2023-10-16 16:55:31 +01:00
parent 19db6b2c8e
commit d6a9295c26
3 changed files with 11 additions and 2 deletions

View File

@@ -95,3 +95,5 @@ include::../gradle/integrating-with-actuator/build-info-additional.gradle[tags=a
----
include::../gradle/integrating-with-actuator/build-info-additional.gradle.kts[tags=additional]
----
An additional property's value can be computed lazily by using a `Provider`.

View File

@@ -30,6 +30,7 @@ import javax.inject.Inject;
import org.gradle.api.Project;
import org.gradle.api.provider.MapProperty;
import org.gradle.api.provider.Property;
import org.gradle.api.provider.Provider;
import org.gradle.api.provider.SetProperty;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.Internal;
@@ -155,7 +156,12 @@ public abstract class BuildInfoProperties implements Serializable {
private Map<String, String> coerceToStringValues(Map<String, Object> input) {
Map<String, String> output = new HashMap<>();
input.forEach((key, value) -> output.put(key, (value != null) ? value.toString() : null));
input.forEach((key, value) -> {
if (value instanceof Provider<?> provider) {
value = provider.getOrNull();
}
output.put(key, (value != null) ? value.toString() : null);
});
return output;
}

View File

@@ -10,7 +10,8 @@ springBoot {
buildInfo {
properties {
additional = [
'a': 'alpha', 'b': 'bravo'
'a': 'alpha',
'b': providers.provider({'bravo'})
]
}
}