Locations#
Additionally, to the default config locations specified by the MicroProfile Config specification, SmallRye Config provides a way to scan additional locations for configuration properties files.
The smallrye.config.locations configuration property accepts multiple locations separated by a comma , and each
ust represent a valid URI. The supported URI schemes are:
- file or directory (
file:) - classpath resource
- jar resource (
jar:) - http resource (
http:)
Each URI scheme loads all discovered resources in a ConfigSource. All loaded sources use the same ordinal of the
source that found the smallrye.config.locations configuration property. For instance, if smallrye.config.locations
is set as a system property, then all loaded sources have their ordinals set to 400 (system properties use 400 as
their ordinal). The ordinal may be overridden directly in the resource by setting the config_ordinal property.
Sources are sorted first by their ordinal, then by location order, and finally by loading order.
If a profile is active, and the URI represents a single resource (for instance a file), then resources that match
the active profile are also loaded. The profile resource name must follow the pattern: {location}-{profile}. A
profile resource is only loaded if the unprofiled resource is also available in the same location. This is to keep a
consistent loading order and pair all the resources together.
Profile resources are not taken into account if the location is a directory since there is no reliable way to discover
which file is the main resource. Properties that use the profile prefix syntax %profile. will work as expected.
All properties files from a directory
# loads all files from a relative path
smallrye.config.locations=./src/main/resources/
# loads all files from an absolute path
smallrye.config.locations=/user/local/config
For relative paths, the JVM user.dir property defines the current directory.
A specific file
smallrye.config.locations=./src/main/resources/additional.properties
If a profile dev is active, and an additional-dev.properties file exists, this will also be loaded.
All additional.properties files from the classpath
If a profile prod is active, and an additional-prod.properties resources exists next to the additional.properties
resource, this will also be loaded.
The resources.properties file from a specific jar
smallrye.config.locations=jar:file:///user/local/app/lib/resources-.jar!/resources.properties
If a profile test is active, and an additional-test.properties resource exists, this will also be loaded.
The config.properties file from a web server