diff --git a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/AbstractQuarkusExtension.java b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/AbstractQuarkusExtension.java index d3abf983d539e..47cd0e461a9b8 100644 --- a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/AbstractQuarkusExtension.java +++ b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/AbstractQuarkusExtension.java @@ -75,7 +75,24 @@ private BaseConfig buildBaseConfig() { // Using common code to construct the "base config", which is all the configuration (system properties, // environment, application.properties/yaml/yml, project properties) that is available in a Gradle task's // _configuration phase_. - EffectiveConfig effectiveConfig = buildEffectiveConfiguration(Collections.emptyMap()); + Set resourcesDirs = getSourceSet(project, SourceSet.MAIN_SOURCE_SET_NAME).getResources().getSourceDirectories() + .getFiles(); + + // Used to handle the (deprecated) buildNative and testNative tasks. + project.getExtensions().getExtraProperties().getProperties().forEach((k, v) -> { + if (k.startsWith("quarkus.")) { + forcedPropertiesProperty.put(k, v.toString()); + } + }); + + EffectiveConfig effectiveConfig = EffectiveConfig.builder() + .withForcedProperties(forcedPropertiesProperty.get()) + .withTaskProperties(Collections.emptyMap()) + .withBuildProperties(quarkusBuildProperties.get()) + .withProjectProperties(project.getProperties()) + .withSourceDirectories(resourcesDirs) + .withProfile(quarkusProfile()) + .build(); return new BaseConfig(effectiveConfig); } @@ -102,20 +119,8 @@ protected Manifest manifest() { protected EffectiveConfig buildEffectiveConfiguration(ResolvedDependency appArtifact) { Map properties = new HashMap<>(); - exportCustomManifestProperties(properties); - String userIgnoredEntries = String.join(",", ignoredEntries.get()); - if (!userIgnoredEntries.isEmpty()) { - properties.put("quarkus.package.jar.user-configured-ignored-entries", userIgnoredEntries); - } - properties.putIfAbsent("quarkus.application.name", appArtifact.getArtifactId()); - properties.putIfAbsent("quarkus.application.version", appArtifact.getVersion()); - - return buildEffectiveConfiguration(properties); - } - - private EffectiveConfig buildEffectiveConfiguration(Map properties) { Set resourcesDirs = getSourceSet(project, SourceSet.MAIN_SOURCE_SET_NAME).getResources().getSourceDirectories() .getFiles(); @@ -126,11 +131,20 @@ private EffectiveConfig buildEffectiveConfiguration(Map properti } }); + Map defaultProperties = new HashMap<>(); + String userIgnoredEntries = String.join(",", ignoredEntries.get()); + if (!userIgnoredEntries.isEmpty()) { + defaultProperties.put("quarkus.package.jar.user-configured-ignored-entries", userIgnoredEntries); + } + defaultProperties.putIfAbsent("quarkus.application.name", appArtifact.getArtifactId()); + defaultProperties.putIfAbsent("quarkus.application.version", appArtifact.getVersion()); + return EffectiveConfig.builder() .withForcedProperties(forcedPropertiesProperty.get()) .withTaskProperties(properties) .withBuildProperties(quarkusBuildProperties.get()) .withProjectProperties(project.getProperties()) + .withDefaultProperties(defaultProperties) .withSourceDirectories(resourcesDirs) .withProfile(quarkusProfile()) .build(); diff --git a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/EffectiveConfig.java b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/EffectiveConfig.java index e05ef9ed6d586..6e471bf99f899 100644 --- a/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/EffectiveConfig.java +++ b/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/EffectiveConfig.java @@ -88,7 +88,19 @@ private EffectiveConfig(Builder builder) { configSources.add(new PropertiesConfigSource(Map.of("platform.quarkus.native.builder-image", "<>"), "NativeConfig#builderImage", 0)); - this.config = buildConfig(builder.profile, configSources); + this.config = ConfigUtils.emptyConfigBuilder() + .setAddDiscoveredSecretKeysHandlers(false) + // We add our own sources for environment, system-properties and microprofile-config + // .properties, + // no need to include those twice. + .setAddDefaultSources(false) + .withDefaultValues(builder.defaultProperties) + .withSources(configSources) + .withProfile(builder.profile) + .withMapping(PackageConfig.class) + .withMapping(NativeConfig.class) + .withInterceptors(ConfigCompatibility.FrontEnd.instance(), ConfigCompatibility.BackEnd.instance()) + .build(); this.values = generateFullConfigMap(config); } @@ -127,30 +139,16 @@ public Map get() { }); } - @VisibleForTesting - static SmallRyeConfig buildConfig(String profile, List configSources) { - return ConfigUtils.emptyConfigBuilder() - .setAddDiscoveredSecretKeysHandlers(false) - // We add our own sources for environment, system-properties and microprofile-config.properties, - // no need to include those twice. - .setAddDefaultSources(false) - .withSources(configSources) - .withProfile(profile) - .withMapping(PackageConfig.class) - .withMapping(NativeConfig.class) - .withInterceptors(ConfigCompatibility.FrontEnd.instance(), ConfigCompatibility.BackEnd.instance()) - .build(); - } - static Builder builder() { return new Builder(); } static final class Builder { + private Map forcedProperties = emptyMap(); + private Map taskProperties = emptyMap(); private Map buildProperties = emptyMap(); private Map projectProperties = emptyMap(); - private Map taskProperties = emptyMap(); - private Map forcedProperties = emptyMap(); + private Map defaultProperties = emptyMap(); private Set sourceDirectories = emptySet(); private String profile = "prod"; @@ -178,6 +176,11 @@ Builder withProjectProperties(Map projectProperties) { return this; } + Builder withDefaultProperties(Map defaultProperties) { + this.defaultProperties = defaultProperties; + return this; + } + Builder withSourceDirectories(Set sourceDirectories) { this.sourceDirectories = sourceDirectories; return this;