Skip to content

Commit a09ea63

Browse files
authored
Merge pull request #45681 from gsmet/pass-platform-properties-gradle
Gradle - Resolve platform properties when possible
2 parents 92722dc + be3edfa commit a09ea63

File tree

10 files changed

+35
-12
lines changed

10 files changed

+35
-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)
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: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.gradle.api.tasks.SourceSet;
2828
import org.gradle.process.JavaForkOptions;
2929

30+
import io.quarkus.bootstrap.model.ApplicationModel;
3031
import io.quarkus.gradle.dsl.Manifest;
3132
import io.quarkus.maven.dependency.ResolvedDependency;
3233
import io.smallrye.common.expression.Expression;
@@ -117,7 +118,9 @@ protected Manifest manifest() {
117118
return baseConfig().manifest();
118119
}
119120

120-
protected EffectiveConfig buildEffectiveConfiguration(ResolvedDependency appArtifact) {
121+
protected EffectiveConfig buildEffectiveConfiguration(ApplicationModel appModel) {
122+
ResolvedDependency appArtifact = appModel.getAppArtifact();
123+
121124
Map<String, Object> properties = new HashMap<>();
122125
exportCustomManifestProperties(properties);
123126

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

142145
return EffectiveConfig.builder()
146+
.withPlatformProperties(appModel.getPlatformProperties())
143147
.withForcedProperties(forcedPropertiesProperty.get())
144148
.withTaskProperties(properties)
145149
.withBuildProperties(quarkusBuildProperties.get())

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ 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).getValues());
9595
try (CuratedApplication curatedApplication = QuarkusBootstrap.builder()
9696
.setBaseClassLoader(getClass().getClassLoader())
9797
.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, 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: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ void generateBuild() {
244244

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

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ 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, new HashMap<>()).getValues();
123123

124124
File outputPath = getGeneratedOutputDirectory().get().getAsFile();
125125

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.gradle.process.JavaForkOptions;
3939
import org.gradle.util.GradleVersion;
4040

41+
import io.quarkus.bootstrap.model.ApplicationModel;
4142
import io.quarkus.deployment.pkg.PackageConfig;
4243
import io.quarkus.gradle.QuarkusPlugin;
4344
import io.quarkus.gradle.dsl.Manifest;
@@ -209,8 +210,10 @@ private void exportCustomManifestProperties(Map<String, Object> properties) {
209210
}
210211
}
211212

212-
protected EffectiveConfig buildEffectiveConfiguration(ResolvedDependency appArtifact,
213+
protected EffectiveConfig buildEffectiveConfiguration(ApplicationModel appModel,
213214
Map<String, ?> additionalForcedProperties) {
215+
ResolvedDependency appArtifact = appModel.getAppArtifact();
216+
214217
Map<String, Object> properties = new HashMap<>();
215218
exportCustomManifestProperties(properties);
216219

@@ -235,6 +238,7 @@ protected EffectiveConfig buildEffectiveConfiguration(ResolvedDependency appArti
235238
forced.put("quarkus.native.enabled", "true");
236239
}
237240
return EffectiveConfig.builder()
241+
.withPlatformProperties(appModel.getPlatformProperties())
238242
.withForcedProperties(forced)
239243
.withTaskProperties(properties)
240244
.withBuildProperties(getQuarkusBuildProperties().get())

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ 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).getValues());
106106
try (CuratedApplication curatedApplication = QuarkusBootstrap.builder()
107107
.setBaseClassLoader(getClass().getClassLoader())
108108
.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,
5353
getAdditionalForcedProperties().get().getProperties());
5454
SmallRyeConfig config = effectiveConfig.getConfig();
5555
List<String> sourceNames = new ArrayList<>();

0 commit comments

Comments
 (0)