'Quarkus profile-aware config isn't used in native compilation
I'm using quarkus profile-aware files to set different property values for different profiles:
- application.properties
quarkus.http.port=9090 # quarkus.http.port is just an example property
- application-staging.properties
quarkus.http.port=9190
This works if I don't enable native-image compilation: if QUARKUS_PROFILE environment variable is staging, Quarkus will pick up the correct property value (i.e. 9190).
However, when I do native compilation (quarkus.package.type=native) it seems quarkus is using the default value (9090); the profile-aware file is ignored by the native binary. "Profile in the property name" still works (i.e. %staging.quarkus.http.port=9190 in application.properties).
Is this the expected behavior? Or what am I missing for the native compilation to work with profile-aware files?
Solution 1:[1]
I solved this problem by adding the following line to the application.properties:
quarkus.native.resources.includes=*.properties
This causes the native compilation process to include all application-*.properties files from the resources so Quarkus can load the correct one depending on the QUARKUS_PROFILE environment variable at runtime.
Solution 2:[2]
Using the getting-started quickstart with the addition of application-dummy.properties
quarkus.http.port=9090
when I build the application with mvn package -DskipTests -Dquarkus.profile=dummy -Dnative
then when I run it, it starts on port 9090 as expected
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Zoidberg |
| Solution 2 | geoand |
