There’s something I just don’t get regarding config files and dev or prod environments.
If you have a .war and want to use the same .war in dev and prod (because the point of the dev environment being, well, to test that the .war is working fine, hence you don’t want to test that .war and then deploy another .war right!?), then where do you put the config file telling if your environment is dev or prod?
Say locally I’ve got user /Users/Alex (on OS X) testing the .war and then, if everything looks fine, I want to deploy on a Linux machine in a /home/tomcat/ repertory.
Where and how do I access the config file telling if it’s a dev or a prod environment?
Don’t tell me people are building two different .war for dev and prod builds right!? That would kinda completely defeat the purpose…
You don’t want to have to rebuild the WAR to move from one environment to another.
You can externalize configuration to a database, of course, but that won’t help much with Spring.
Another thought is to have a configuration file set for each environment, with the name embedded in the names (e.g., “config-devl.xml”, “config-test.xml”, “config-prod.xml”). Have an environment variable set for each environment that matches the postfix value. Have your app read the config files with the postfix value set by the environment variable on startup.