Hi.
You are correct. You can use the merge policy specifying multiple sources for the configuration.
In the @Sources() annotation you can specify System Properties and Environment Variables. ${workspace} is something known by the IDE; if the IDE sets this as system variable, you can use it. On Unix systems (Linux/Mac) you have an environment variable called ${PWD} but I don't know if something similar is available on Windows. The $PWD variable should point to the working directory, that generally is set to the project dir by the IDE when running your application; so you could try with @Sources({file:"${PWD}/foobar.properties"}) or better just @Sources{"file:foobar.properties}, since if you don't specify the path, the URI file:foobar.properties will be resolved in the current working directory.
I think, the best option is to bind the workspace directory to a System property programmatically before calling ConfigFactory.create(), in a portable way. Eclipse or other IDE can probably be configured to run your app adding a system property binded with the IDE workspace, something like "-Dmyapp.config.base=${workspace}" in the run configurations. Then in your Config object you'll be able to specify @Sources({"file:${myapp.config.base}/foobar.properties"})
Hope this helps.
L.