Skip to content

Commit 17d805a

Browse files
committed
Gradle - Resolve platform properties when possible
We were always passing a <<ignored>> value for the native builder which is a problem. We now correctly get the values from the platform properties when possible.
1 parent e75b0fd commit 17d805a

File tree

10 files changed

+34
-12
lines changed

10 files changed

+34
-12
lines changed

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/extension/QuarkusPluginExtension.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ public void beforeTest(Test task) {
7474
Map<String, Object> props = task.getSystemProperties();
7575
ApplicationModel appModel = getApplicationModel(TEST);
7676

77-
SmallRyeConfig config = buildEffectiveConfiguration(appModel.getAppArtifact()).getConfig();
77+
SmallRyeConfig config = buildEffectiveConfiguration(appModel.getAppArtifact(), appModel.getPlatformProperties())
78+
.getConfig();
7879
config.getOptionalValue(TEST.getProfileKey(), String.class)
7980
.ifPresent(value -> props.put(TEST.getProfileKey(), value));
8081

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/AbstractQuarkusExtension.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,8 @@ protected Manifest manifest() {
117117
return baseConfig().manifest();
118118
}
119119

120-
protected EffectiveConfig buildEffectiveConfiguration(ResolvedDependency appArtifact) {
120+
protected EffectiveConfig buildEffectiveConfiguration(ResolvedDependency appArtifact,
121+
Map<String, String> platformProperties) {
121122
Map<String, Object> properties = new HashMap<>();
122123
exportCustomManifestProperties(properties);
123124

@@ -140,6 +141,7 @@ protected EffectiveConfig buildEffectiveConfiguration(ResolvedDependency appArti
140141
defaultProperties.putIfAbsent("quarkus.application.version", appArtifact.getVersion());
141142

142143
return EffectiveConfig.builder()
144+
.withPlatformProperties(platformProperties)
143145
.withForcedProperties(forcedPropertiesProperty.get())
144146
.withTaskProperties(properties)
145147
.withBuildProperties(quarkusBuildProperties.get())

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/Deploy.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ public Deploy() {
9191
public void checkRequiredExtensions() {
9292
ApplicationModel appModel = resolveAppModelForBuild();
9393
Properties sysProps = new Properties();
94-
sysProps.putAll(extension().buildEffectiveConfiguration(appModel.getAppArtifact()).getValues());
94+
sysProps.putAll(extension().buildEffectiveConfiguration(appModel.getAppArtifact(), appModel.getPlatformProperties())
95+
.getValues());
9596
try (CuratedApplication curatedApplication = QuarkusBootstrap.builder()
9697
.setBaseClassLoader(getClass().getClassLoader())
9798
.setExistingModel(appModel)

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/EffectiveConfig.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,15 @@ private EffectiveConfig(Builder builder) {
6060
// 100 -> microprofile.properties in classpath (provided by default sources)
6161
// 0 -> fallback config source for error workaround (see below)
6262

63+
PropertiesConfigSource platformPropertiesConfigSource;
64+
if (builder.platformProperties.isEmpty()) {
65+
// we don't have the model yet so we don't have the Platform properties around
66+
platformPropertiesConfigSource = new PropertiesConfigSource(
67+
Map.of("platform.quarkus.native.builder-image", "<<ignored>>"), "platformProperties", 0);
68+
} else {
69+
platformPropertiesConfigSource = new PropertiesConfigSource(builder.platformProperties, "platformProperties", 0);
70+
}
71+
6372
this.config = ConfigUtils.emptyConfigBuilder()
6473
.forClassLoader(toUrlClassloader(builder.sourceDirectories))
6574
.withSources(new PropertiesConfigSource(builder.forcedProperties, "forcedProperties", 600))
@@ -70,9 +79,7 @@ private EffectiveConfig(Builder builder) {
7079
.withSources(new YamlConfigSourceLoader.InFileSystem())
7180
.withSources(new YamlConfigSourceLoader.InClassPath())
7281
.addPropertiesSources()
73-
// todo: this is due to ApplicationModel#getPlatformProperties not being included in the effective config
74-
.withSources(new PropertiesConfigSource(Map.of("platform.quarkus.native.builder-image", "<<ignored>>"),
75-
"NativeConfig#builderImage", 0))
82+
.withSources(platformPropertiesConfigSource)
7683
.withDefaultValues(builder.defaultProperties)
7784
.withProfile(builder.profile)
7885
.withMapping(PackageConfig.class)
@@ -122,6 +129,7 @@ static Builder builder() {
122129
}
123130

124131
static final class Builder {
132+
private Map<String, String> platformProperties = emptyMap();
125133
private Map<String, String> forcedProperties = emptyMap();
126134
private Map<String, ?> taskProperties = emptyMap();
127135
private Map<String, String> buildProperties = emptyMap();
@@ -134,6 +142,11 @@ EffectiveConfig build() {
134142
return new EffectiveConfig(this);
135143
}
136144

145+
Builder withPlatformProperties(Map<String, String> platformProperties) {
146+
this.platformProperties = platformProperties;
147+
return this;
148+
}
149+
137150
Builder withForcedProperties(Map<String, String> forcedProperties) {
138151
this.forcedProperties = forcedProperties;
139152
return this;

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusBuildDependencies.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ private void jarDependencies(Path libBoot, Path libMain) {
144144
}
145145

146146
ApplicationModel appModel = resolveAppModelForBuild();
147-
SmallRyeConfig config = getExtensionView().buildEffectiveConfiguration(appModel.getAppArtifact(), new HashMap<>())
147+
SmallRyeConfig config = getExtensionView()
148+
.buildEffectiveConfiguration(appModel.getAppArtifact(), appModel.getPlatformProperties(), new HashMap<>())
148149
.getConfig();
149150

150151
// see https://quarkus.io/guides/class-loading-reference#configuring-class-loading

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusBuildTask.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,8 @@ void generateBuild() {
244244

245245
ApplicationModel appModel = resolveAppModelForBuild();
246246
SmallRyeConfig config = getExtensionView()
247-
.buildEffectiveConfiguration(appModel.getAppArtifact(), getAdditionalForcedProperties().get().getProperties())
247+
.buildEffectiveConfiguration(appModel.getAppArtifact(), appModel.getPlatformProperties(),
248+
getAdditionalForcedProperties().get().getProperties())
248249
.getConfig();
249250
Map<String, String> quarkusProperties = Expressions.withoutExpansion(() -> {
250251
Map<String, String> values = new HashMap<>();

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusGenerateCode.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,8 @@ public Set<File> getInputDirectory() {
119119
public void generateCode() throws IOException {
120120
ApplicationModel appModel = ToolingUtils.deserializeAppModel(getApplicationModel().get().getAsFile().toPath());
121121
Map<String, String> configMap = getExtensionView()
122-
.buildEffectiveConfiguration(appModel.getAppArtifact(), new HashMap<>()).getValues();
122+
.buildEffectiveConfiguration(appModel.getAppArtifact(), appModel.getPlatformProperties(), new HashMap<>())
123+
.getValues();
123124

124125
File outputPath = getGeneratedOutputDirectory().get().getAsFile();
125126

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusPluginExtensionView.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ private void exportCustomManifestProperties(Map<String, Object> properties) {
210210
}
211211

212212
protected EffectiveConfig buildEffectiveConfiguration(ResolvedDependency appArtifact,
213-
Map<String, ?> additionalForcedProperties) {
213+
Map<String, String> platformProperties, Map<String, ?> additionalForcedProperties) {
214214
Map<String, Object> properties = new HashMap<>();
215215
exportCustomManifestProperties(properties);
216216

@@ -235,6 +235,7 @@ protected EffectiveConfig buildEffectiveConfiguration(ResolvedDependency appArti
235235
forced.put("quarkus.native.enabled", "true");
236236
}
237237
return EffectiveConfig.builder()
238+
.withPlatformProperties(platformProperties)
238239
.withForcedProperties(forced)
239240
.withTaskProperties(properties)
240241
.withBuildProperties(getQuarkusBuildProperties().get())

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusRun.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,8 @@ public void setJvmArgs(List<String> jvmArgs) {
102102
public void runQuarkus() {
103103
ApplicationModel appModel = resolveAppModelForBuild();
104104
Properties sysProps = new Properties();
105-
sysProps.putAll(extension().buildEffectiveConfiguration(appModel.getAppArtifact()).getValues());
105+
sysProps.putAll(extension().buildEffectiveConfiguration(appModel.getAppArtifact(), appModel.getPlatformProperties())
106+
.getValues());
106107
try (CuratedApplication curatedApplication = QuarkusBootstrap.builder()
107108
.setBaseClassLoader(getClass().getClassLoader())
108109
.setExistingModel(appModel)

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusShowEffectiveConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public void dumpEffectiveConfiguration() {
4949
try {
5050
ApplicationModel appModel = resolveAppModelForBuild();
5151
EffectiveConfig effectiveConfig = getExtensionView()
52-
.buildEffectiveConfiguration(appModel.getAppArtifact(),
52+
.buildEffectiveConfiguration(appModel.getAppArtifact(), appModel.getPlatformProperties(),
5353
getAdditionalForcedProperties().get().getProperties());
5454
SmallRyeConfig config = effectiveConfig.getConfig();
5555
List<String> sourceNames = new ArrayList<>();

0 commit comments

Comments
 (0)